C#: передача nullable переменной к методу, который только принимает непустой Вар

@Marius:

табличные данные расположения? Нет, в то время как это было стандартно несколько лет назад, это не теперь:-)

Еще одно использование, которое я имел бы для него, будет формы, особенно маркируют: пары текстового поля. Это могло технически быть сделано в полях отделения, но очень, намного легче сделать это в таблицах, и можно утверждать, что label:textbox пары являются на самом деле табличными по своей природе.

я склонен давать маркировке фиксированную ширину или отображать ее на строке выше.

6
задан dtb 10 November 2009 в 01:35
поделиться

2 ответа

Используйте свойство Value переменной, допускающей значение NULL:

public xyz (int? a) {
  if (a.HasValue) { 
    blah = DoSomething(a.Value);
    ...

Метод GetValueOrDefault также может быть полезен в некоторых ситуациях:

x = a.GetValueOrDefault(42);  // returns 42 for null

или

y = a.GetValueOrDefault(); // returns 0 for null
16
ответ дан 8 December 2019 в 05:55
поделиться

Вы можете преобразовать int? в int или использовать a.Value :

if (a.HasValue)
{ 
  blah = DoSomething((int)a);

  // or without a cast as others noted:
  blah = DoSomething(a.Value);
}

Если это будет выполнено с помощью else, которое передает значение по умолчанию, вы также можете обработать все в одной строке:

// using coalesce
blah = DoSomething(a?? 0 /* default value */);

// or using ternary
blah = DoSomething(a.HasValue? a.Value : 0 /* default value */);

// or (thanks @Guffa)
blah = DoSomething(a.GetValueOrDefault(/* optional default val */));
6
ответ дан 8 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

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