Бизнес-объект возвращает short?
тип данных.Будет ли этот код нарушен?
Как бы получить это значение в переменной?
short? myShort = SomeBusinessObject.UserBlah;
Это правильно? Будет ли он сломаться, если он равен нулю?
Бизнес-объект возвращает short?
тип данных.Будет ли этот код нарушен?
Как бы получить это значение в переменной?
short? myShort = SomeBusinessObject.UserBlah;
Это правильно? Будет ли он сломаться, если он равен нулю?
Да, это правильно.
Действительно ли вы пытаетесь защитить от SomeBusinessObject равным нулю? Если это так, типы с нулевым значением не помогут вам. Вам все еще нужно проверить, является ли ваш SomeBusinessObject нулевым.
Я предполагаю, что это так, потому что если UserBlah возвращает короткий, то он никогда не будет пустым (поскольку короткий не является типом с нулевым значением).
myShort
будет null
если бизнес-объект возвращается null
.
Нельзя ссылаться на myShort
как тип значения, поэтому это нормально.
Вы можете использовать myShort.HasValue
, чтобы узнать, myShort
is null
или нет.
Используйте myShort.Value
, чтобы получить стоимость. Он выдает исключение, если значение не определено.
Вы можете использовать GetValueOrDefault()
и передать значение по умолчанию, чтобы получить значение, даже если оно не определено (null
). Эта функция возвращает значение, которое вы передали, если тип с нулевым значением - null
.
myShort будет аннулирована, только если UserBlah
неявно конвертируются в Nullable<Int16>
и устанавливается нулевое значение, в этом случае он не сломается, если вы пытаетесь получить доступ к члену myShort.Value
.
Вы также можете сделать это:
short defaultValue = 0;
short myShort = SomeBusinessObject.UserBlah ?? defaultValue;
Это правильно. У вас есть только беспокоиться, если вы присваиваете myShort к ненулевым Короче говоря, в этом случае вы должны проверить HasValue, например, так:
short s = myShort.HasValue ? myShort.Value : (short) 0; // or some other short value
GetValueOrDefault() – Nick
Еще лучше. Я использую этот синтаксис, потому что по умолчанию 0, и мы используем * .MinValue, если значение DB равно null. Мы по-прежнему переходим к типам NULL с устаревшей системой. –
Используйте нулевой оператор коалесценции вместо указанного выше шаблона. –
Чтобы получить его в переменное использовании myShort.Value после проверки myShort .HasValue
не забывайте о нулевом операторе коалесценции.
short myShort = SomeBusinessObject.UserBlah ?? 0;
если SomeBusinessObject.UserBlah имеет нулевое значение, он просто передает значение справа от ?? поэтому вы можете по умолчанию что-то сказать.
Думаю, вам нужно уточнить, что вы думаете, может быть пустым. Многие ответы дают предположения о том, что возвращает UserBlah. Мое предположение (и, следовательно, мой ответ) заключается в том, что вы пытаетесь защитить от SomeBusinessObject равным нулю. Однако это предположение, и больше информации было бы хорошо. –