【问题标题】:Operator overloading and precedence运算符重载和优先级
【发布时间】:2012-10-08 08:23:52
【问题描述】:

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

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

【问题讨论】:

    标签: c# operator-overloading


    【解决方案1】:

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

    相关引述:

    用户定义的操作符实现总是优先于 预定义的运算符实现:仅在不适用时 用户定义的运算符实现存在将预定义的 可以考虑运算符实现。

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

    【讨论】:

      【解决方案2】:

      重载不会改变优先级。

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

      【讨论】:

        猜你喜欢
        • 2011-06-21
        • 2020-03-05
        • 1970-01-01
        • 2017-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-29
        • 2013-07-31
        相关资源
        最近更新 更多