比较相同泛型类型的两个实例的最佳(最简洁和最佳)方法是什么,以便比较标识(相同对象,因此不调用)和值相等的值类型的引用类型.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)
您应该只能使用object.Equals
值类型:
return typeof(T).IsValueType
? object.Equals(x, y)
: ReferenceEquals(x, y);
Run Code Online (Sandbox Code Playgroud)