我有一个 System.Net.IPAddress 的扩展类,我想重载二元运算符 >, <, ==
但是编译器告诉我不能在静态类中重载这些运算符,而我的其他扩展方法必须具有这些运算符。这有什么特别的原因吗?
谢谢。
最佳答案
运算符必须与声明它们的类型的实例相关。由于您不能拥有静态类的实例,因此定义运算符毫无意义。
.NET 中没有“扩展运算符”。
为了您的目的,考虑实现 IComparer<T>
(涵盖 <
和 >
)和/或 IEqualityComparer<T>
(涵盖 ==
,或者您可能只使用比较返回 0
;这取决于您是否认为“排序相等”和“相等”相同)。
关于c# - 为什么不能在静态类中重载运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2245866/