【发布时间】:2012-10-08 08:23:52
【问题描述】:
在 C# 中,您可以重载运算符,例如+ 和 *。在他们的数学解释中,这些运算符具有明确定义的优先顺序。
重载时是否保持此顺序,是否以某种确定性方式更改,或者您也可以重载优先顺序?
【问题讨论】:
在 C# 中,您可以重载运算符,例如+ 和 *。在他们的数学解释中,这些运算符具有明确定义的优先顺序。
重载时是否保持此顺序,是否以某种确定性方式更改,或者您也可以重载优先顺序?
【问题讨论】:
如果你重载一个操作符,它总是优先于默认实现。但是,您不能更改运算符本身的优先级,因此它将保留为默认值。有关MSDN 的更多信息。
相关引述:
用户定义的操作符实现总是优先于 预定义的运算符实现:仅在不适用时 用户定义的运算符实现存在将预定义的 可以考虑运算符实现。
和
用户定义的运算符声明不能修改语法, 运算符的优先级或关联性。例如,/ 运算符始终是二元运算符,始终具有优先级 在Section 7.2.1 中指定,并且始终是左关联的。
【讨论】:
重载不会改变优先级。
运算符优先级由编译器设置,不能更改,至少在不自定义编译器的情况下是这样。
【讨论】: