检查通用值的相等性
如果泛型类或方法的逻辑需要检查具有泛型类型的值的相等性,请使用 EqualityComparer<TType>.Default
属性 :
public void Foo<TBar>(TBar arg1, TBar arg2)
{
var comparer = EqualityComparer<TBar>.Default;
if (comparer.Equals(arg1,arg2)
{
...
}
}
这种方法比简单地调用 Object.Equals()
方法更好,因为默认比较器实现检查,TBar
类型是否实现了 IEquatale<TBar>
接口 ,如果是,则调用 IEquatable<TBar>.Equals(TBar other)
方法。这允许避免值类型的装箱/拆箱。