如果提供了一个整数(或其他值类型),并输入object
,我很确定无法使用default()
(返回给定类型的默认值) )直接返回底层的盒装默认值,这是正确的吗?
我宁愿在一次操作中对object
进行调用,而不必按如下方式编写一组条件:
public object GetDefaultVal(object obj){
if(obj is Guid){
return default(Guid);
}
if(obj is double){
return default(double);
}
....
}
答案 0 :(得分:2)
假设您无法将方法更改为通用方法,您可以使用所有值类型提供无参数构造函数的事实,因此您可以调用Activator.CreateInstance
:
public object GetDefaultValue(object obj)
{
Type type = obj.GetType();
return type.IsValueType ? Activator.CreateInstance(type) : null;
}
(所有引用类型的默认值为null。)