I have Type and I want to get the default value. For example, if Type is class or nullable I should get null. But if it is integer, DateTime. decimal, ... I should get 0. What is the best way of doing this?
CodePudding user response:
I expect you can use something like this:
public static object GetDefaultValue(Type type)
{
return type.IsClass ? null : Activator.CreateInstance(type);
}
CodePudding user response:
From your description you can just use a default expression or literal.
int a = default(int);
int a = default;
Default values of C# types (C# reference)
Type | Default value |
---|---|
Any reference type | null |
Anybuilt-in integral numeric type | 0 (zero) |
Any built-in floating-point numeric type | 0 (zero) |
bool | false |
char | '\0' (U 0000) |
enum | The value produced by the expression (E)0, where E is the enum identifier. |
struct | The value produced by setting all value-type fields to their default values and all reference-type fields to null. |
Any nullable value type | An instance for which the HasValue property is false and the Value property is undefined. That default value is also known as the null value of a nullable value type. |
CodePudding user response:
You could use Activator.CreateInstance to generate an empty variable of the type and then check the value of it :)