我可以在接口上重载==运算符吗?
我有这样的界面:
public interface IFoo
{
int A {get;}
int B {get;}
}
我有多个实现IFoo的类。
我想检查相等性,而不是基于ReferenceEquality,但是如果A和B都相同,那么两个IFoos应该被认为是相同的(实际上我正在检查通过WCF发送的Key-Value对的集合,这就是为什么我可以没有ReferenceEquality)。
如果我有:
IFoo first = new FooBar1() { A = 1, B = 1};
IFoo second = new FooBar2() { A = 1, B = 1};
if (first == second) {
//this should return true
}
目前IFoo
是IEquatable<IFoo>
,所以FooBar1和FooBar2覆盖Equals(IFoo other)
,但这不是在==上调用的内容。我正在寻找我的代码,用a.Equals(b)
替换a==b
,但这并不好。
我能做什么?
没有找到相关结果
已邀请:
4 个回复
赣借
需要使用其中一种类型的静态方法,并且接口不能包含这些方法。扩展方法也无济于事。所以在接口==总是使用引用相等。 请注意,如果a == null,
将抛出异常。
祁澈盘哼颗
继承自
并使用
箩冀娥
马口