这是IEquatable <t>被引入的原因吗?</t>

时间:2011-04-19 20:00:03

标签: c#

引入IEquatable<T>接口的主要原因是因为它允许您执行与System.Object.Equals方法相同的操作但不必执行强制转换?

谢谢

3 个答案:

答案 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所说的,它还可以在结构之间进行自定义相等性检查时避免装箱。