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吗?这是否有助于您: