Сегодня поговорим о nullable, и так int? value = 0;
Это можно юзать так:
if(value == 0){
}
А НУЖНО так:
if(value.Value == 0) {
}
Потому что во втором случае будет в раза два быстрее. Вопрос ?
Андрей: why
Афтар: Давай подумаем логически, с левой стороны у нас структура System.Nullable
Андрей: привидения
Афтар: не явное, да?
Андрей: ну да. Только во 2 случае value.Value == 0 разве не будет привидения?
Афтар: с лева int c права int, никакого implicit, так вот см. что делает implicit в System.Nullable
public static implicit operator Nullable
return new Nullable
}
Тадам! Оно, приводи правое значение к Nullable типу, поэтому в два раза дольше чем через свойство .Value…
Андрей: (bow)
Nullable
var i = val != null && val.HasValue ? val.Value : 0;