运算符重载和优先级

时间:2012-10-17 23:47:58

标签: c# operator-overloading

在C#中你可以重载运算符,例如+*。在他们的数学解释中,这些算子具有明确的优先顺序。

重载时是否保留此顺序,是否以某种确定性方式更改,或者您是否也可以重载优先顺序?

2 个答案:

答案 0 :(得分:17)

如果重载运算符,它将始终优先于默认实现。但是,您无法更改运算符本身的优先级,因此它将保留为默认值。有关MSDN的更多信息。

相关引言:

  

用户定义的运算符实现始终优先于   预定义的运算符实现:仅在不适用时   预定义的用户定义的运算符实现将存在   算术运算实现。

  

用户定义的运算符声明无法修改语法,   优先级,或运营商的关联性。例如,/   运算符始终是二元运算符,始终具有优先级   在Section 7.2.1中指定,并且始终是左关联的。

答案 1 :(得分:4)

重载不会改变优先级。

运算符优先级由编译器设置,不能更改,至少在没有自定义编译器的情况下不能更改。