5

我知道“默认”关键字返回静态确定类型的默认值,例如在这个问题中所示。

但是,给定一个类型的实例,是否有一种简单的方法可以动态地获取该类型的默认值?我在谷歌搜索时发现的唯一方法

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

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

4

2 回答 2

7

为什么要避免激活器?基本上这就是这样做的方式。

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

于 2009-02-06T13:36:49.693 回答
5

这可能是您最好的路线。

我不会害怕在这里使用 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
于 2009-02-06T13:37:14.933 回答