在.NET中,在运行时:如何从Type对象获取类型的默认值?

时间:2010-04-21 21:24:49

标签: c# .net runtime types

  

可能重复:
  Default value of a type

在C#中,要获取Type的默认值,我可以写...

var DefaultValue = default(bool);`

但是,如何为提供的Type变量获取相同的默认值?。

public object GetDefaultValue(Type ObjectType)
{
    return Type.GetDefaultValue();  // This is what I need
}

或者,换句话说,“默认”关键字的实现是什么?

2 个答案:

答案 0 :(得分:37)

我认为Frederik的功能实际上应该是这样的:

public object GetDefaultValue(Type t)
{
    if (t.IsValueType)
    {
        return Activator.CreateInstance(t);
    }
    else
    {
        return null;
    }
}

答案 1 :(得分:15)

您也应该排除Nullable<T>案例,以减少几个CPU周期:

public object GetDefaultValue(Type t) {
    if (t.IsValueType && Nullable.GetUnderlyingType(t) == null) {
        return Activator.CreateInstance(t);
    } else {
        return null;
    }
}