我知道“default”关键字返回静态确定类型的默认值,如this question中所示。
但是,给定一个类型的实例,是否有一种简单的方法来动态获取此类型的默认值? 我在谷歌搜索时找到的唯一方法是this:
static object DefaultValue(Type myType)
{
if (!myType.IsValueType)
return null;
else
return Activator.CreateInstance(myType);
}
但如果可能的话,我想避免使用Activator类。
答案 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