.Net Tips – Getting the default value of a type outside of generics

To get the default value of a type, you’ve probably used the default keyword in .Net already:

   1: var defaultInt = default(int);        // 0

   2: var defaultObj = default(string);     // null

However, the use of the default keyword requires a type name to be specified at compile time, so you won’t be able to use it on a type which you discover at runtime. Instead, you will need to do something along the line of:

   1: public object GetDefaultValue(Type type)

   2: {

   3:     // Handle value types and reference types differently

   4:     if (type.IsValueType)

   5:     {

   6:         return Activator.CreateInstance(type);

   7:     }

   8:     else

   9:     {

  10:         return null;

  11:     }

  12: }

It’ll yield the same result as using the default keyword:

   1: var defaultInt = GetDefaultValue(typeof(int));        // 0

   2: var defaultObj = GetDefaultValue(typeof(string));     // null