当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何以非泛型方式获取类型的默认值?》经验,为你挑选了2个好方法。

我知道"default"关键字返回静态确定类型的默认值,如本问题中所示.

但是,给定一个类型的实例,是否有一种简单的方法来动态获取此类型的默认值?我发现谷歌搜索,而唯一的办法是这样:

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

但是如果可能的话我想避免使用Activator类.



1> Jon Skeet..:

为什么要避免使用Activator?基本上这就是这样做的方式.

我的意思是,你可以写一个通用的方法,然后通过反射调用它,但这是一个非常可怕的"长切",只是为了避免Activator.



2> JaredPar..:

这可能是您最好的选择.

我不会害怕在这里使用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

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有