使用& # 39;默认# 39;在'Object'类型的实例上使用关键字

本文关键字:关键字 实例 类型 默认 使用 Object | 更新日期: 2023-09-27 18:15:16

当提供一个整数(或其他值类型)作为object装箱时,我很确定没有办法使用default()(返回给定类型的默认值)直接返回底层的装箱默认值,这是正确的吗?

我宁愿在一个操作中调用object,而不必像下面这样写一堆条件:

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

使用& # 39;默认# 39;在'Object'类型的实例上使用关键字

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

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

(所有引用类型的默认值都是null)