Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用';默认值';类型为';对象';_C#_Default_Boxing_Unboxing - Fatal编程技术网

C# 使用';默认值';类型为';对象';

C# 使用';默认值';类型为';对象';,c#,default,boxing,unboxing,C#,Default,Boxing,Unboxing,当提供了一个整型(或其他值类型)作为对象装箱时,我很确定没有办法直接在其上使用default()(返回给定类型的默认值)来返回底层装箱的默认值,对吗 我宁愿在单个操作中调用对象,而不必编写大量条件语句,如下所示: public object GetDefaultVal(object obj){ if(obj is Guid){ return default(Guid); } if(obj is double){ return default(double); } .... }

当提供了一个整型(或其他值类型)作为
对象装箱时,我很确定没有办法直接在其上使用
default()
(返回给定类型的默认值)来返回底层装箱的默认值,对吗

我宁愿在单个操作中调用
对象
,而不必编写大量条件语句,如下所示:

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

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

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

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

返回默认值(typeof(obj))?鉴于您的示例由于未提供方法名而无法编译,并且使用
default
而不是
default
。@Henningsson()不会返回
类型的实例,因此您的要求非常不明确,因此,它总是为null…您能将该方法改为泛型吗?或者,例如,您真的需要能够传递装箱整数并检索装箱0吗?这是否有助于您: