2016-10-27 77 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; 
} 

相關問題