我知道"default"关键字返回静态确定类型的默认值,如本问题中所示.
但是,给定一个类型的实例,是否有一种简单的方法来动态获取此类型的默认值?我发现谷歌搜索,而唯一的办法是这样:
static object DefaultValue(Type myType) { if (!myType.IsValueType) return null; else return Activator.CreateInstance(myType); }
但是如果可能的话我想避免使用Activator类.
为什么要避免使用Activator?基本上这就是这样做的方式.
我的意思是,你可以写一个通用的方法,然后通过反射调用它,但这是一个非常可怕的"长切",只是为了避免Activator.
这可能是您最好的选择.
我不会害怕在这里使用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