|
本帖最后由 ㄣ负二代 于 2013-8-3 18:19 编辑
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);
|
|