16

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

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

4

2 回答 2

20

如果你重载一个操作符,它总是优先于默认实现。但是,您不能更改运算符本身的优先级,因此它将保留为默认值。有关MSDN的更多信息。

相关报价:

用户定义的运算符实现总是优先于预定义的运算符实现:只有当不存在适用的用户定义的运算符实现时,才会考虑预定义的运算符实现。

用户定义的运算符声明不能修改运算符的语法、优先级或关联性。例如, / 运算符始终是二元运算符,始终具有第 7.2.1 节中指定的优先级,并且始终是左结合的。

于 2012-10-17T23:51:35.863 回答
4

重载不会改变优先级。

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

于 2012-10-17T23:57:13.740 回答