尝试以下用C#错误在C#试图将值比较字符串
if (state != 'WI' && state != 'IL')
该声明时给我,指出错误,我得到一个错误时:错误!=操作符不能应用到'string'或'char'类型的操作数
如果这是不可能的,那么完成我的目标的方法是什么。
尝试以下用C#错误在C#试图将值比较字符串
if (state != 'WI' && state != 'IL')
该声明时给我,指出错误,我得到一个错误时:错误!=操作符不能应用到'string'或'char'类型的操作数
如果这是不可能的,那么完成我的目标的方法是什么。
使用字符串双引号:
单引号是有用的单个字符:
char c = 'A';
if (c != 'B') ...
编辑:其他人使用Equals
比较建议的,我不完全同意,它应取代==
方法,除非您有理由使用它。首先,如果state
是null
,则写入state.Equals("WI")
将引发异常。解决的办法是使用String.Compare(state, "WI")
代替,但不再返回bool
和将需要对一个整数(如果它们是相同的则返回0)检查:
if (String.Compare(state, "WI") != 0)
其次,我会建议使用两种Equals
或因为两者都提供过载String.Compare
如果区分大小写的问题来处理这个问题:
string foo = "Foo";
string otherFoo = "foo";
Console.WriteLine("Equals: {0}", foo.Equals(otherFoo));
Console.WriteLine("Equals case insensitive: {0}", foo.Equals(otherFoo, StringComparison.InvariantCultureIgnoreCase));
Console.WriteLine("Compare: {0}", String.Compare(foo, otherFoo) == 0);
Console.WriteLine("Compare case insensitive: {0}", String.Compare(foo, otherFoo, StringComparison.InvariantCultureIgnoreCase) == 0);
// make foo null
foo = null;
Console.WriteLine("Null Compare: {0}", String.Compare(foo, otherFoo) == 0);
Console.WriteLine("Null Equals: {0}", foo.Equals(otherFoo)); // exception
用双引号括字符串文字!
您正在使用单引号分隔字符串。这些意思是char
。
尝试:
用双引号。
虽然你的代码是完全OK,你应该考虑使用string.Equals
方法:
if (!state.Equals("WI") && !state.Equals("IL"))
您应该使用 “WI” 也使用等于字符串的方法!state.Equals("WI")
if (!state.Equals("WI") && !state.Equals("IL")) {
}
如果'state == null'会引发异常 – 2010-10-30 19:22:21
如果这是不可能的,那么完成我的目标的方法是什么。
RTFEM! *错误消息清楚地表明其中一个操作数被解释为char
而不是string
。在
state != 'WI'
的情况下,有两个操作数:state
和'WI'
。如果您宣称state
为string
,那么显然它不能是state
,它被解释为char
。因此,它必须是'WI'
,这被解释为char
。现在你问自己:“为什么这被解释为char
?如果不用单引号括起来(”'
“),我该如何在C#中声明string
?”那么,你谷歌"declare string C#"并点击“我很幸运”,你点击Strings (C# Programming Guide)它告诉你声明一个string
文字你用双引号括起来(“"
”)。
因此,
*这并不意味着是不礼貌的,所以不要采取这种方式。这个答案非常符合“如果你教一个人钓鱼......”的哲学。
为什么他应该使用Equals?它会导致问题,如果状态== null并且不收获。 – CodesInChaos 2010-10-30 17:35:26