下面的c++/cli程序为什么编译错?
using namespace System;int main()
{
StringComparison^ sc=StringComparison::OrdinalIgnoreCase;
String ^s1="Computer Language Learning";
String ^s2="language";
int index=s1->IndexOf(s2,sc);
Console::WriteLine("{0}",index);
return 0;
}
上面的程序编译: cl /clr t.cpp
出现编译错误:
error C2664: “int System::String::IndexOf(wchar_t,int)”: 不能将参数 1 从“System::String ^”转换为“wchar_t”
没有用户定义的转换运算符,或者
没有使该转换得以执行的上下文
s1->IndexOf(s2,sc); 为什么会被认为是调用这个重载:int System::String::IndexOf(wchar_t,int)
我查了net 的String类的方法,是有下面这个重载方法的:
public int IndexOf(
string value,
StringComparison comparisonType
)
把这个程序改为c# 版本:
using System;
class program {
static void Main()
{
StringComparison sc=StringComparison.OrdinalIgnoreCase;
string s1="Computer Language learning";
string s2="languag";
int index=s1.IndexOf(s2,sc);
Console.WriteLine("{0}",index);
}
}
编译: csc t.cs
不会出错,运行正确
这是什么原因?