这就是为什么引入了IEquatable<T>的原因吗?

5
< p >为什么引入 IEquatable<T>接口的主要原因是什么?它允许您执行与 System.Object.Equals 方法相同的操作,但无需执行强制转换。 < / p > < p >谢谢< / p >
3个回答

5
为了使其类型安全,我认为应该这样做。 Equals() 接受一个对象作为参数,因此只有在运行时,您才会看到传入错误类型的对象时出现的错误。

3

一个原因是您可以要求一个类与所需类型相等,而不一定是该类型。例如:

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.
        }
    }
}

3
除了@Bala R所说的之外,这也避免了在结构体之间进行自定义相等性检查时出现装箱。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接