为什么其中一个参数包含在运算符重载中的类型

时间:2017-09-13 12:25:31

标签: c# operator-overloading

我的问题是为什么必须在运算符重载中包含一个包含类对象作为参数,为什么有这样一个参数背后的原因是什么?

1 个答案:

答案 0 :(得分:0)

您正在为特定的类/结构重载操作符,这意味着至少有一个操作数必须是相同的类型 - 操作数由参数定义。

如果你想到如何使用重载运算符,尤其是像++这样的一元运算符,这会更容易。显然,为了调用你重载的++,你必须将它应用于你重载它的类的类,否则编译器会如何知道你打算调用你的重载操作符。

类似地,对于二元运算符,编译器需要知道定义重载运算符的位置。如果使用类B和C的参数重载类A上的+运算符,那么尝试将B的实例添加到C的实例中,为什么编译器会认为您打算在A上使用重载运算符?如果B类和C类也有重载+运算符怎么办?