Nullable

Сегодня поговорим о nullable, и так int? value = 0;

Это можно юзать так:

if(value == 0){

}

А НУЖНО так:

if(value.Value == 0) {
}

Потому что во втором случае будет в раза два быстрее. Вопрос ?

Андрей: why

Афтар: Давай подумаем логически, с левой стороны у нас структура System.Nullable а с правой int, как происходит сравнение двух разных типов?!

Андрей: привидения

Афтар: не явное, да?

Андрей: ну да. Только во 2 случае value.Value == 0 разве не будет привидения?

Афтар: с лева int c права int, никакого implicit, так вот см. что делает implicit в System.Nullable


public static implicit operator Nullable(T value) {
return new Nullable(value);
}

Тадам! Оно, приводи правое значение к Nullable типу, поэтому в два раза дольше чем через свойство .Value…

Андрей: (bow)

Nullable переменную не надо проверять на null потому что это структура.


var i = val != null && val.HasValue ? val.Value : 0;

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *