2016-10-27 42 views
1

当提供一个整数(或其他值类型)作为object装箱时,我很确定没有办法使用default()(返回默认值一个给定的类型)直接返回底层盒装默认值,这是正确的?在'Object'类型的实例上使用'Default'关键字

我宁愿就在一次操作object通话,而无需如下编写条件语句的负载:

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

return default(typeof(obj))? – Henningsson

+1

由于没有提供方法名称,并且使用'Default'而不是'default',因此您的示例无法编译,因此您所要求的内容很不清楚。 –

+1

@Henningsson不是typeof()返回一个'Type'的实例,因此它总是为空...... – maxp

回答

2

假如你不能改变的方法是通用的,你可以使用所有的值类型提供参数的构造函数的事实,所以你可以调用Activator.CreateInstance:(所有引用类型的默认值为null)

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

相关问题