2009-10-11 91 views
5

给定一个未知引用或值类型的实例,有什么方法可以测试实例是否包含该类型的默认值?我设想这样的事情...C# - 如何测试一个实例是否是其类型的默认值

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

当然,这并不工作,因为的GetType返回一个运行时类型,但我希望有人能提出类似的技术。谢谢。

回答

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

注意:您不能使用泛型类型T.

+4

使用==平等可以跳过明确的对象,只是做的equals(输入,默认((T)) – 2009-10-11 15:07:35

+0

+1:布莱恩: )当然,我宁愿尽可能明确地进行这种比较。 OP的函数是一个实例方法,我们不想调用Equals的错误实现。 – Juliet 2009-10-11 15:21:47

+0

似乎它会是一个很棒的扩展方法。 – LJM 2009-10-11 15:35:28

相关问题