If I want a method that returns the default value of a given type and the method is generic I can return a default value like so:
public static T GetDefaultValue() { return default(T); }
Can I do something similar in case I have the type only as a System.Type
object?
public static object GetDefaultValue(Type type) { //??? }
The default value of a reference type is null . It means that if a reference type is a static class member or an instance field and not assigned an initial value explicitly, it will be initialized automatically and assigned the value of null .
Objects. Variables of any "Object" type (which includes all the classes you will write) have a default value of null.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With