C#的比较运算2007-09-11 本站 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);