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