我正在使用反射来遍历一个Type
属性并将某些类型设置为默认值.现在,我可以对类型进行切换并default(Type)
明确设置,但我宁愿在一行中进行.有默认的程序化等价物吗?
对于任何给定的类型,我想知道它的默认值.
在C#中,有一个名为default的关键字,就像这样做
object obj = default(Decimal);
Run Code Online (Sandbox Code Playgroud)
但我有一个Type(称为myType)的实例,如果我这样说,
object obj = default(myType);
Run Code Online (Sandbox Code Playgroud)
它不起作用
这样做有什么好办法吗?我知道一个巨大的开关块可以工作,但这不是一个好的选择.
考虑以下代码:
public string Variable1 { get; set;}
public int Variable2 { get; set;}
public void Function()
{
// Has been Variable1 Initialized?
}
Run Code Online (Sandbox Code Playgroud)
在函数内部,我想知道在函数调用之前是否已将值发送到Variable1和Variable2,
即使已发送DEFAULT值,也没问题(对于字符串为null,对于int为0)
因此,您可以在代码中使用静态类型
var defaultMyTypeVal = default(MyType);
Run Code Online (Sandbox Code Playgroud)
在给定变量Type的情况下,您会如何做同样的事情,以便在运行时使用它?
换句话说,如何在没有一堆if语句或使用Generics的情况下实现以下方法(因为我不知道我在编译时传入方法的类型)?
public object GetDefaultValueForType(Type type) {
....
}
Run Code Online (Sandbox Code Playgroud)