C#中,可重载的运算符
C#中,运算符重载必须声明为public和static的,重载 == 和 != 时,最好也应重载Equals()和GetHashCode()方法,因为 == 和Equals()方法应保持一样的逻辑(不重载后两方法,会产生一个compiler warning)
类 别 |
运 算 符 |
限 制 |
算术二元运算符 |
+, *, /, –, % |
无 |
算术一元运算符 |
+, –, ++, –– |
无 |
按位二元运算符 |
&, |, ^, <<, >> |
无 |
按位一元运算符 |
!, ~, true, false |
true和false运算符必须成对重载 |
比较运算符 |
==, !=, >=, <, <=, > |
必须成对重载 |
赋值运算符 |
+=,–=,*=,/=,>>=,<<=,%= ,&=,|=,^= |
不能显式重载这些运算符,在重写单个运算符如+,–,%等时,它们会被隐式重写 |
索引运算符 |
[] |
不能直接重载索引运算符。第2章介绍的索引器成员类型允许在类和结构上支持索引运算符 |
数据类型转换运算符 |
() |
不能直接重载数据类型转换运算符。用户定义的数据类型转换(在本章的第2部分介绍)允许定义定制的数据类型转换 |