10

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?
} 
Myles McDonnell
  • 12,943
  • 17
  • 66
  • 116

1 Answers1

17

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.

Jon Skeet
  • 1,421,763
  • 867
  • 9,128
  • 9,194