使用'默认'类型'对象'的实例上的关键字

时间:2016-10-27 08:34:30

标签: c# default boxing unboxing

如果提供了一个整数(或其他值类型),并输入object,我很确定无法使用default()(返回给定类型的默认值) )直接返回底层的盒装默认值,这是正确的吗?

我宁愿在一次操作中对object进行调用,而不必按如下方式编写一组条件:

public object GetDefaultVal(object obj){
 if(obj is Guid){
  return default(Guid);
 }
 if(obj is double){
  return default(double);
 }
....
}

1 个答案:

答案 0 :(得分:2)

假设您无法将方法更改为通用方法,您可以使用所有值类型提供无参数构造函数的事实,因此您可以调用Activator.CreateInstance

public object GetDefaultValue(object obj)
{
    Type type = obj.GetType();
    return type.IsValueType ? Activator.CreateInstance(type) : null;
}

(所有引用类型的默认值为null。)