【问题标题】:What does operator + in method definition do?方法定义中的运算符 + 有什么作用?
【发布时间】:2015-02-11 21:29:46
【问题描述】:

所以我以前从未见过这个,我正试图弄清楚它的作用:

public static MyFunction operator +(MyObject first, MyObject second)

【问题讨论】:

  • 是加法运算符。它允许您“添加”两个MyObjects
  • 谢谢,在我提出这个问题后,我真的想通了。我以前从未见过它使用过,所以它把我吓坏了,这个代码库中的过载是疯狂的。
  • 如果您想进一步讨论网站审核政策,请在 Meta 或聊天室中进行讨论。我已经清理了 cmets 以专注于提出的问题。

标签: c# .net operator-overloading


【解决方案1】:

它被称为operator overload

它允许您使用原始运算符(例如+-% 等)应用于您定义的对象。

一个可能有用的示例是,如果您有两个列表,并且您想将一个添加到另一个列表的末尾。 MSDN 使用的另一个例子是如果你有两个向量的复数。

如今,通常更合适的是定义一个方法来接收您想要应用的操作数的数量并使用该方法,而不是通过覆盖用于其他的东西。

tl;博士;除非你有充分的理由,否则使用方法而不是运算符重载。

【讨论】:

  • vector1 + vector2 > Vector.Add(vector1, vector2)
  • @EmperorAiman 一般来说,除非您正在编写一些真正核心的框架内容 IMO,否则应避免运算符重载。做你想做的事,但这只是一个底层的方法,如果你只使用方法签名就可以避免混淆
【解决方案2】:

它覆盖了该类的+ 运算符,允许编译和运行这样的代码:

MyObject op1 = new MyObject();
MyObject op2 = new MyObject();
MyFunction result = op1 + op2;

执行+ 操作会调用您发布的方法。有关运算符重载的更多信息,请参阅MSDN

【讨论】:

    【解决方案3】:

    这称为运算符重载,允许您为运算符定义行为,例如“+”、“-”、“==”等。

    更多信息请看这里:https://msdn.microsoft.com/en-us/library/aa288467%28v=vs.71%29.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2010-11-21
      • 2021-02-24
      相关资源
      最近更新 更多