Welcome

首页 / 软件开发 / C# / C#的比较运算

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);