引入IEquatable<T>
接口的主要原因是因为它允许您执行与System.Object.Equals
方法相同的操作但不必执行强制转换?
谢谢
答案 0 :(得分:5)
为了让它安全,我想。 Equals()
将一个对象作为参数,因此如果传入一个错误类型的对象直到运行它,就不会看到错误。
答案 1 :(得分:3)
一个原因是,您可以要求一个类与所需类型相等,而不一定是该类型。 E.g。
public void MyClass<T> where T : IEquatable<Foo>
{
private static readonly Foo SpecialFoo = Foo.SpecialFoo;
public void MyMethodThatProcessesTs(T theT)
{
if (theT.Equals(SpecialFoo))
{
// process theT.
}
}
}
答案 2 :(得分:3)
除了@Bala R所说的,它还可以在结构之间进行自定义相等性检查时避免装箱。