一尘不染

运行时类型的默认值

c#

对于任何给定的类型,我想知道其默认值。

在C#中,有一个名为default的关键字来完成此操作

object obj = default(Decimal);

但是我有一个Type实例(称为myType),如果我这样说,

object obj = default(myType);

它不起作用

有什么好办法吗?我知道一个巨大的开关块将起作用,但这不是一个好选择。


阅读 211

收藏
2020-05-19

共1个答案

一尘不染

实际上只有两种可能:null引用类型和new myType()值类型(对于int,float等,它对应于0)因此,您实际上只需要考虑以下两种情况:

object GetDefaultValue(Type t)
{
    if (t.IsValueType)
        return Activator.CreateInstance(t);

    return null;
}

(由于值类型始终具有默认构造函数,因此对Activator.CreateInstance的调用将永远不会失败)。

2020-05-19