C#中的泛型值相等(标识)

Mar*_*cki 5 c# generics

比较相同泛型类型的两个实例的最佳(最简洁和最佳)方法是什么,以便比较标识(相同对象,因此不调用)和值相等的类型的引用类型.Equals

目前我这样做:

static bool IdentityEquals<T>(T x, T y)
{
    return typeof(T).IsValueType
        ? EqualityComparer<T>.Default.Equals(x, y)
        : ReferenceEquals(x, y);
}
Run Code Online (Sandbox Code Playgroud)

D S*_*ley 5

您应该只能使用object.Equals值类型:

 return typeof(T).IsValueType
    ? object.Equals(x, y)
    : ReferenceEquals(x, y);
Run Code Online (Sandbox Code Playgroud)

  • @MarcinWisnicki你确实要求"最好(最简洁)" (4认同)