Create default instance of type [duplicate]

2020-04-02 09:21发布

What is the reflective equivalent of :

default(object);  //null

When I do not have the type until runtime, e.g.

public void Method(Type type)
{
   var instance = type.CreateDefault(); //no such method exists, but I expect there is a way of doing this?
} 

1条回答
闹够了就滚
2楼-- · 2020-04-02 09:52

For any reference type, the default value is a null instance. For any value type, the default value can be obtained via Activator.CreateInstance. But when you have a variable called instance that suggests you want an actual instance rather than a null reference... So while you can do this:

public object GetDefaultValue(Type type)
{
    return type.IsValueType ? Activator.CreateInstance(type) : null;
} 

... it's not really clear how useful this is. The is the default value of the type, which isn't the same as a default instance of the type.

查看更多
登录 后发表回答