Ответ 1
Я думаю, что функция Фредерика должна выглядеть так:
public object GetDefaultValue(Type t)
{
if (t.IsValueType)
{
return Activator.CreateInstance(t);
}
else
{
return null;
}
}
Возможный дубликат:
Значение по умолчанию для типа
В С#, чтобы получить значение по умолчанию для типа, я могу написать...
var DefaultValue = default(bool);`
Но как получить одно и то же значение по умолчанию для поставляемой переменной типа?.
public object GetDefaultValue(Type ObjectType)
{
return Type.GetDefaultValue(); // This is what I need
}
Или, другими словами, какова реализация ключевого слова "default"?
Я думаю, что функция Фредерика должна выглядеть так:
public object GetDefaultValue(Type t)
{
if (t.IsValueType)
{
return Activator.CreateInstance(t);
}
else
{
return null;
}
}
Вероятно, вы также должны исключить случай Nullable<T>
, чтобы сократить несколько циклов процессора:
public object GetDefaultValue(Type t) {
if (t.IsValueType && Nullable.GetUnderlyingType(t) == null) {
return Activator.CreateInstance(t);
} else {
return null;
}
}