This question already has answers here:
Null or default comparison of generic argument in C#

(14个回答)


已关闭8年。




我希望能够检查一个值是否是其值类型的默认值。理想情况下,我想说:
DoSomething<TValue>(TValue value) {
    if (value == default(TValue)) {
        ...
    }
}

但是,编译器提示无法对TValue和TValue进行==比较。到目前为止,这是我想到的最好的解决方法:
DoSomething<TValue>(TValue value) {
    if (value == null || value.Equals(default(TValue))) {
        ...
    }
}

有没有更优雅/正确的方法来解决这个问题?

最佳答案

public bool EqualsDefaultValue<T>(T value)
{
    return EqualityComparer<T>.Default.Equals(value, default(T));
}

关于c# - 使用泛型类型的默认值检查,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2187471/

10-10 14:25