Since you really only have to worry about value types (reference types will just be null), you can use Activator.CreateInstance
to call the default constructor on them.
public static object GetDefaultValue(Type type) {
return type.IsValueType ? Activator.CreateInstance(type) : null;
}
Edit: Jon is (of course) correct. IsClass
isn’t exhaustive enough – it returns False
if type
is an interface.