2016-10-27 6 views
1

При поставке с целым числом (или другим типом значения) в виде 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', поэтому он всегда будет null ... – maxp

ответ

2

Предполагая, что вы не можете изменить способ быть универсальным, вы можете просто использовать тот факт, что все типы значений предоставить конструктор без параметров, так что вы можете позвонить Activator.CreateInstance: (. значение по умолчанию для всех ссылочных типов равна нулю)

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

Смежные вопросы