运算符重载和优先级

16
在 C# 中,你可以重载运算符,比如 +*。在它们的数学解释中,这些运算符有严格确定的优先级顺序。
当进行运算符重载时,是否保留这个顺序,还是以某种明确的方式进行更改,或者说你也可以重载优先级顺序呢?
2个回答

20

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

相关引用:

 

用户定义的运算符实现始终优先于预定义的运算符实现:仅当不存在适用的用户定义的运算符实现时,才会考虑预定义的运算符实现。

以及

 

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


4

重载不会改变运算符的优先级。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接