Значение по умолчанию для определяемого пользователем класса в C#

Я вижу, что некоторый код возвратит значение по умолчанию, таким образом, я задамся вопросом для определяемого пользователем класса, как компилятор определит свое значение по умолчанию?

52
задан Peter Mortensen 11 December 2010 в 13:58
поделиться

6 ответов

Чтобы подключиться к остальным, это будет null , но я также должен добавить, что вы можете получить значение по умолчанию любого типа, используя default

default(MyClass) // null
default(int) // 0

Это может быть особенно полезно при работе с дженериками; вы можете захотеть вернуть default (T) , если ваш тип возврата - T и вы не хотите предполагать, что он допускает значение NULL.

62
ответ дан 7 November 2019 в 09:19
поделиться

Значение по умолчанию для класса - null

14
ответ дан 7 November 2019 в 09:19
поделиться

Значение по умолчанию для классов null . Для структур значение по умолчанию такое же, как и при создании экземпляра конструктора структуры без параметров по умолчанию (который, кстати, не может быть переопределен). То же правило рекурсивно применяется ко всем полям, содержащимся внутри класса или структуры.

7
ответ дан 7 November 2019 в 09:19
поделиться

Примечание. Атрибут 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

11
ответ дан 7 November 2019 в 09:19
поделиться

Если это ссылочный тип, значение по умолчанию будет null , если это тип значения, то это зависит.

3
ответ дан 7 November 2019 в 09:19
поделиться
Assert.IsTrue(default(MyClass) == null);
2
ответ дан 7 November 2019 в 09:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: