测试平等默认值
以下不会编译:测试平等默认值
public void MyMethod<T>(T value) {
if (value == default(T))
{
// do stuff
}
}
错误:Operator '==' cannot be applied to operands of type 'T' and 'T'
我不能使用value == null因为T可能是一个结构。
我不能使用value.Equals(default(T)),因为value可能是null。
什么是测试相等到默认值的正确方法?
回答:
为了避免拳击struct/Nullable<T>,我会用:
if (EqualityComparer<T>.Default.Equals(value,default(T))) {
// do stuff
}
这支持实现IEquatable<T>任何T,使用object.Equals作为备份,并处理null等等(并且自动解除运营商对于Nullable<T>)。
还有Comparer<T>.Default它处理比较测试。这处理T实施IComparable<T>,回落到IComparable - 再次处理null和解除运营商。
回答:
什么
object.Equals(value, default(T)) 以上是 测试平等默认值 的全部内容, 来源链接: utcz.com/qa/260532.html


