代码之家  ›  专栏  ›  技术社区  ›  lumberjack4

为什么不能在静态类中重载运算符?

  •  8
  • lumberjack4  · 技术社区  · 16 年前

    我有一个System.Net.IPAddress的扩展类,我想重载二进制运算符 >, <, == 但是编译器告诉我,我不能在静态类中重载这些运算符,我必须为我的其他扩展方法重载这些运算符。这有什么特别的原因吗?

    谢谢

    1 回复  |  直到 16 年前
        1
  •  13
  •   Marc Gravell    16 年前

    运算符必须与声明它们的类型的实例相关。因为不能有静态类的实例,所以定义操作符是没有意义的。

    NET中没有“扩展运算符”。

    为了您的目的,考虑实现一个 IComparer<T> (封面 < > )和/或 IEqualityComparer<T> (封面 == ,还是你 只需使用比较返回 0

    推荐文章