如何以非泛型方式获取类型的默认值?

时间:2009-02-06 13:31:50

标签: c# default-value

我知道“default”关键字返回静态确定类型的默认值,如this question中所示。

但是,给定一个类型的实例,是否有一种简单的方法来动态获取此类型的默认值? 我在谷歌搜索时找到的唯一方法是this

static object DefaultValue(Type myType)
{
    if (!myType.IsValueType)
        return null;
    else
        return Activator.CreateInstance(myType);
}

但如果可能的话,我想避免使用Activator类。

2 个答案:

答案 0 :(得分:7)

为什么要避免使用Activator?基本上的做法。

我的意思是,你可以编写一个泛型方法,然后通过反射来调用它,但这是一个非常可怕的“长切”,只是为了避免使用Activator。

答案 1 :(得分:6)

这可能是您最好的选择。

我不会害怕在这里使用Activator类。这是一个非常标准的类,它依赖于编译器。例如这个VB代码

Public Sub Example(Of T as New)()
  Dim x = new T()
End Sub

大致转换为此代码

Public Sub Example(Of T As New)()
  Dim x = Activator.CreateInstance(OF T)
ENd Sub