我有一个System.Net.IPAddress的扩展类,想要重载二进制运算符>, <, ==
,但编译器告诉我不能在静态类中重载这些运算符,而我必须为其他扩展方法保留这个类。这背后是否有特定的原因呢?
谢谢。
我有一个System.Net.IPAddress的扩展类,想要重载二进制运算符>, <, ==
,但编译器告诉我不能在静态类中重载这些运算符,而我必须为其他扩展方法保留这个类。这背后是否有特定的原因呢?
谢谢。
运算符必须与它们所声明类型的实例相关联。由于无法创建静态类的实例,因此定义运算符是没有意义的。
.NET中不存在“扩展运算符”。
对于您的目的,请考虑实现 IComparer<T>
(涵盖<
和>
),和/或 IEqualityComparer<T>
(涵盖==
),或者您可能只需使用返回0
的比较方法;这取决于您是否将“排序相同”和“相等”视为相同。