C# 运算符重载
2018-01-22 17:09 更新
C# 运算符重载
运算符可以为自定义类型重载。
以下符号运算符可以重载:
+(unary)
-(unary)
!
~
++
--
+
-
*
/
%
&
|
^
<<
>>
==
!=
>
<
>=
<=
以下运算符也是可重载的:隐式和显式转换true和false。
复合赋值运算符(例如,+ =,/ =)通过重写非复合运算符(例如,+,/)而隐式重写。
条件运算符&&和||通过重写按位运算符&和|隐式重写。
运算符函数
运算符通过声明运算符函数重载。
函数的名称使用运算符关键字和运算符符号指定。
运算符函数必须标记为static和public。
操作符函数的参数表示操作数。
运算符函数的返回类型表示表达式的结果。
至少一个操作数必须是声明操作符函数的类型。
在下面的示例中,我们定义一个名为Coin的结构,然后重载+运算符:
public struct Coin {
int value;
public Coin (int c) {
value = c;
}
public static Coin operator + (Coin x, int p) {
return new Coin (x.value + p);
}
}
这个重载允许我们给一个Coin添加一个int:
Coin B = new Coin (2);
Coin A = B + 2;
重载赋值运算符会自动支持相应的复合赋值运算符。
在我们的示例中,由于我们覆盖+,我们也可以使用+ =:
B += 2;
注意
C#编译器强制执行要定义的逻辑对的运算符。这些运算符是(==!=),(<>)和(<=> =)。
如果你重载==和!=,你通常需要重写对象上定义的Equals和GetHashCode方法。
如果你重载(<>)和(<=> =),你应该实现IComparable和IComparable <T>。
隐式和显式转换是可重载的操作符。
以上内容是否对您有帮助:
← C# 可空类型
更多建议: