Подтвердить что ты не робот

В .NET во время выполнения: как получить значение по умолчанию для типа объекта Type?

Возможный дубликат:
Значение по умолчанию для типа

В С#, чтобы получить значение по умолчанию для типа, я могу написать...

var DefaultValue = default(bool);`

Но как получить одно и то же значение по умолчанию для поставляемой переменной типа?.

public object GetDefaultValue(Type ObjectType)
{
    return Type.GetDefaultValue();  // This is what I need
}

Или, другими словами, какова реализация ключевого слова "default"?

4b9b3361

Ответ 1

Я думаю, что функция Фредерика должна выглядеть так:

public object GetDefaultValue(Type t)
{
    if (t.IsValueType)
    {
        return Activator.CreateInstance(t);
    }
    else
    {
        return null;
    }
}

Ответ 2

Вероятно, вы также должны исключить случай Nullable<T>, чтобы сократить несколько циклов процессора:

public object GetDefaultValue(Type t) {
    if (t.IsValueType && Nullable.GetUnderlyingType(t) == null) {
        return Activator.CreateInstance(t);
    } else {
        return null;
    }
}