我有一个System.Net.IPAddress的扩展类,我想重载二进制运算符>, <, ==
,但编译器告诉我,我不能在静态类中重载这些运算符,我必须有我的其他扩展方法。这有什么特别的原因吗?
感谢。
答案 0 :(得分:13)
运算符必须与声明它们的类型的实例相关。由于您不能拥有静态类的实例,因此定义运算符是没有意义的。
.NET中没有“扩展操作符”。
出于您的目的,请考虑实施IComparer<T>
(涵盖<
和>
)和/或IEqualityComparer<T>
(涵盖==
,或可能只使用比较返回0
;这取决于你是否认为“排序相等”和“相等”相同)。