C # enum - это ноль? - PullRequest
       17

C # enum - это ноль?

1 голос
/ 07 октября 2011

У меня есть следующий код в пользовательском элементе управления:

public partial class MyControl : System.Web.UI.UserControl
{    
    public Enums.InformationSubCategory SubCategory { get; set; }

    ...omitted code
}

Enums.InformationSubCategory - это enum, который я определил в другом месте, с идеей, что я могу сделать это:

Example 1. <my:MyControl runat="server" SubCategory="Food" ...... />
Example 2. <my:MyControl runat="server" ...... />

Если я вообще не укажу значение для SubCategory, каким будет значение SubCategory в коде для MyControl?Это null или к нему применяется значение по умолчанию?Я заметил, что с int свойствами по умолчанию он равен нулю.

Ответы [ 3 ]

2 голосов
/ 07 октября 2011

Поля инициализируются до default(T). Простой способ запомнить значение по умолчанию для некоторого типа состоит в том, что он соответствует двоичному нулю в очевидной реализации.

Для перечисления это означает, что базовый целочисленный тип установлен в 0. По умолчанию это соответствует первому значению, определенному в перечислении.

Поэтому первое имя в перечислении обычно называют None.

0 голосов
/ 07 октября 2011

Базовым типом элементов перечисления по умолчанию является int.По умолчанию первый перечислитель имеет значение 0, а значение каждого последующего перечислителя увеличивается на 1. Например:

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

В этом перечислении Sat равен 0, Sun равен 1, Mon равен 2, и так далее.Перечислители могут иметь инициализаторы для переопределения значений по умолчанию.

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

В этом перечислении последовательность элементов должна начинаться с 1 вместо 0.

0 голосов
/ 07 октября 2011

Это будет 0, так как ваш enum по умолчанию основан на Int32.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...