檢查通用值的相等性

如果泛型類或方法的邏輯需要檢查具有泛型型別的值的相等性,請使用 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) 方法。這允許避免值型別的裝箱/拆箱。