Search code examples
c#reflectiondefault

Programmatic equivalent of default(Type)


I'm using reflection to loop through a Type's properties and set certain types to their default. Now, I could do a switch on the type and set the default(Type) explicitly, but I'd rather do it in one line. Is there a programmatic equivalent of default?


Solution

    • In case of a value type use Activator.CreateInstance and it should work fine.
    • When using reference type just return null
    public static object GetDefault(Type type)
    {
       if(type.IsValueType)
       {
          return Activator.CreateInstance(type);
       }
       return null;
    }
    

    In the newer version of .net such as .net standard, type.IsValueType needs to be written as type.GetTypeInfo().IsValueType