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

时间:2010-02-11 16:25:42

标签: c# operator-overloading language-design

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

感谢。

1 个答案:

答案 0 :(得分:13)

运算符必须与声明它们的类型的实例相关。由于您不能拥有静态类的实例,因此定义运算符是没有意义的。

.NET中没有“扩展操作符”。

出于您的目的,请考虑实施IComparer<T>(涵盖<>)和/或IEqualityComparer<T>(涵盖==,或可能只使用比较返回0;这取决于你是否认为“排序相等”和“相等”相同)。