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

To get the default val­ue of a type, you’ve prob­a­bly used the default key­word in .Net already:

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

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

How­ev­er, the use of the default key­word requires a type name to be spec­i­fied at com­pile time, so you won’t be able to use it on a type which you dis­cov­er at run­time. Instead, you will need to do some­thing 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 key­word:

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

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