嘗試以下用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