Я вижу, что некоторый код возвратит значение по умолчанию, таким образом, я задамся вопросом для определяемого пользователем класса, как компилятор определит свое значение по умолчанию?
Чтобы подключиться к остальным, это будет null
, но я также должен добавить, что вы можете получить значение по умолчанию любого типа, используя default
default(MyClass) // null
default(int) // 0
Это может быть особенно полезно при работе с дженериками; вы можете захотеть вернуть default (T)
, если ваш тип возврата - T
и вы не хотите предполагать, что он допускает значение NULL.
Значение по умолчанию для классов null
. Для структур значение по умолчанию такое же, как и при создании экземпляра конструктора структуры без параметров по умолчанию (который, кстати, не может быть переопределен). То же правило рекурсивно применяется ко всем полям, содержащимся внутри класса или структуры.
Примечание. Атрибут DefaultValueAttribute не приведет к автоматической инициализации члена со значением атрибута. Вы должны установить начальное значение в своем коде.
Вы можете украсить свои свойства атрибутом DefaultValueAttribute.
private bool myVal=false;
[DefaultValue(false)]
public bool MyProperty {
get {
return myVal;
}
set {
myVal=value;
}
}
Я знаю, что это не отвечает на ваш вопрос, просто хотел добавить это как соответствующую информацию.
Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute.aspx
Если это ссылочный тип, значение по умолчанию будет null
, если это тип значения, то это зависит.