C#运算符重载==

卡斯帕罗夫92

我正在尝试重载==运算符,但出现以下错误:

预期可重载的一元运算符

这是我的代码

  public bool operator == (MyClass nm1)
  {
       return true;
  }

  public bool operator != (MyClass m2)
  {
       return true;
  }

我遵循了msdn注意,但仍然遇到相同的错误

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

当您重载时operator ==,应static使用将两个实例作为参数方法来执行此操作

public static bool operator == (MyClass leftSide, MyClass rightSide) {
     return true;
}

public static bool operator != (MyClass leftSide, MyClass rightSide) {
     return !(leftSide == rightSide);
}

static 在执行比较的代码不属于左实例或右实例的意义上,上下文使您的操作员的代码更具“对称性”。

另外,static不可能“虚拟化”运算符(您仍然可以在实现中通过调用虚拟函数来实现,但是必须显式地实现)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章