C#中定義的比較操作符有:
●==等於
●!=不等於
●<小於
●>大於
●<=小於或等於
●>=大於或等於
整數與實數
對於整數類型和實數類型,這六種比較操作符都可以適用。根據IEEE 754標准,比較運算符符合下面的規則:
●如果有一個操作數為NaN(空)那麼除“!=”之外所有操作符結果為false,“!=”的運算結果為“true”。對於任何兩個操作數“x!=y”部等價於“!(x==y)”。可是當一個或兩個操作數為NaN(空)時,“<,>,<=,”和“>=”操作符的結果和其相反操作符的邏輯非的結果是不同的。如,x或y為NaN,則x<y總是false的,但是!(x==y)為true。
●兩個操作數不是NaN時,操作符根據下列順序:
-∞<-max<...<-min<-0.0==+0.0<+min<...<+max<+∞
(其中min和max分別是指浮點格式所能表示的最小和最大的有限值)。
注意:在C#中:
●正零和負零被認為是相等的。
●負無窮被認為小於其它任何值,只是等於另一個負無窮。
●正無窮被認為大於其它任何值,只是等於另一個正無窮。
布爾類型
對於布爾類型的比較操作符實際上只有兩種:
bool Operator==(bool x,bool y);
bool Operator!=(bool x,bool y);
如果x和y都為true或false,則“==”的結果為true,否則為false。
相反的,如果x和y都為true或false,則“!=”的結果為false,否則結果為true。當操作數為bool類型時,“!=”操作符和^操作符有相等的結果。
枚舉類型
每一種枚舉類型隱式地提供下列預比較操作符。
bool Operator==(E x,E y);
bool Operator!=(E x,E y);
bool Operator<(E x,E y);
bool Operator>(E x,E y);
bool Operator<=(E x,E y);
bool Operator>=(E x,E y);
執行“x op y”的結果,這裡x和y是一個枚舉類型E,其基類為U的表達式,op表示比較操作符,其等價於((U)x) op ((U)y),即枚舉類型比較操作符簡單地比較兩個操作數的基類型值。
引用類型
預定義引用類型等價操作符有:
bool Operator==(object x,object y);
bool Operator!=(object x,object y);
該操作符返回兩個引用類型是否等價的結果。
字符串
預定義字符串等價操作符有:
bool Operator==(string x,string y);
bool Operator!=(string x,string y);
下列條件之一成立則認為兩個字符串值相等:
●兩個字符串值都為null;
●兩個字符串是字符串長度相同、對應的字符序列也相同的非空字符串。
注意:字符串等價操作符比較的是兩個字符串的值,而不是字符串引用。當兩個單獨的字符串實例含有相同的字符串序列,則認為這兩個字符串的值相等。引用類型等價操作符可以用於比較兩個字符串引用,不是比較兩個字符串的值。
代表類型
每一個代表類型隱式地提供下列預定義比較操作符:
bool Operator==(System.Delegate x,D y);
bool Operator==(D x,System.Delegate y);
bool Operator!=(System.Delegate x,D y);
bool Operator!=(D x,System.Delegate y);