Любопытный синтаксис C# с вопросительным знаком

private enum E_Week
{
   Mon = 0,
   Tue,
   . . .
}

Что следующее кодирует средний?

E_Week? week= null;

Это равно следующему коду? Какова функция'?' подпишитесь здесь?

E_Week week= null;
24
задан Peter Mortensen 29 March 2011 в 10:17
поделиться

3 ответа

Ваш код использует то, что называется Nullable . Enum, как и int или dateTime, это то, что известно как «тип значения», который должен всегда иметь некоторое значение. Nullabley типы позволяют вам лечить типы значений, как если бы они позволяют нулевые значения.

Например, этот код недействителен и не будет компитенным, потому что Enums не может быть нулевым:

E_Week week = null;

, но этот код действителен:

E_Week? week = null;

, а это точно так же, как это:

Nullable<E_Week> week = null;
30
ответ дан 28 November 2019 в 23:10
поделиться

E_Week? эквивалентно Nullable

, см. здесь для получения дополнительной информации Nullable Типы.

16
ответ дан 28 November 2019 в 23:10
поделиться

Самое значительное отличие состоит в том, что второе утверждение не работает;) то? Знак в основном дает вам возможность установить тип значения (в данном случае Enum) к нулю, который обычно невозможен ..

5
ответ дан 28 November 2019 в 23:10
поделиться
Другие вопросы по тегам:

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