C# - 如何测试一个实例是否为其类型的默认值

5

如何在未知参考或值类型的情况下,测试实例是否包含该类型的默认值?我设想可以用以下方式...

bool IsDefaultValue(object value)
{
    return value == default(value.GetType());
}

当然,这种方法行不通,因为GetType返回的是运行时类型。但我希望有人能提出类似的技巧。谢谢。
1个回答

9
static bool IsDefaultValue<T>(T input)
{
    return Object.Equals(input, default(T));
}

注意:您不能使用通用类型T的 == 进行相等性比较。

4
你可以跳过显式指定对象,直接使用Equals(input, default((T)))。这句话的意思是,你可以不用显式指定一个对象,而是直接使用默认值来判断input是否相等。 - Brian Rasmussen
+1:Brian :) 当然,对于这种比较,我更喜欢尽可能明确。OP的函数是一个实例方法,我们不想调用错误的Equals实现。 - Juliet
似乎这将是一个很棒的扩展方法。 - LJM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接