Какой кайф от использования свойства Value? Уже не в первый раз у нас на работе укладывают разные части сайта тем, что используют что-то типа:
int? test = 1;
int test2 = test.Value;
Я спросил программиста, который написал подобного плана код - нафига ты использовал свойство Value? Я никогда это свойство не использовал (на самом деле использовал, интересно было узнать, что скажет программер на это), поэтому не понимаю смысла от его использования. Ответ программиста, который написал подобный код - я использовал Value, чтобы заткнуть компилятор. просто test2 не позволяет принимать нулевые значения, поэтому следующий код не скомпилируется:
int? test = 1;
int test2 = test;
У свойства Value есть полезные свойства, но никогда не используйте его чтобы просто заткнуть компилятор.
1. Если в переменной test окажется значение null, то приложение рухнет.
2. Если в переменной test не может быть null и вы в этом уверены, то просто не объявляйте эту переменную как int? и не будет проблем
3. Если не можете изменить тип переменной test, а нужно превратить переменную в ненулевую int, не затыкайте рот компилятору свойством Value. Обязательно проверяйте на нулевое значение и выбрасывайте более информативное исключение:
int? test = null;
if (test == null)
throw new Exception("Какой идиот присвоил в test значение null?");
int test2 = test.Value;
Если вы согласны воспринимать null как 0, то можно написать так:
int? test = null;
int test2 = test ?? 0;
Но никогда не пишите код только для того, чтобы заткнуть рот компилятору. Компилятор - это помощник, а не враг программиста. В том числе не игнорируйте предупреждения.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
Обычно для Nullable типов еще пишут
if (!test.HasValue())
throw new NullReferenceException();
или
if (test.HasValue())
{
// Do something
}
Можно использовать и HasValue
А что такое int? ???
Это целое число, которое может принимать значени null. По другому еще Nullable<Int32>.
Компилятор - это маленькая злобная программа, которая мешает запустить мне мое приложение. Постоянно находит какие-то ошибки.
- Так заткните его! Раз и навсегда! Вы всё поняли??
- Конечно, босс.
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.