В нашем коде C #мы уже проверяем, является ли переменная нулевой, прежде чем пытаться получить к ней доступ.
if (myInt.HasValue) {
var yourInt = myInt;
// do something with yourInt
}
Мой вопрос :есть ли разница в использовании свойства, допускающего значение NULL, как если бы оно не было после того, как оно было протестировано, по сравнению со следующим?
if (myInt.HasValue) {
var yourInt = myInt.Value; // see the difference?
// do something with yourInt
}
Является ли это просто вопросом предпочтения или существует особая причина или влияние на производительность для использования .Value
даже после того, как объект, допускающий значение NULL, прошел этот тест?
ОБНОВЛЕНИЕ
Я расширил свой второй пример, мы уже тестируем с помощью HasValue
, но здесь мы используем .Value
для доступа к значению.
ОБНОВЛЕНИЕ 2
Я обновил примеры, чтобы использовать var
s, потому что в нашем коде мы на самом деле не используем типы int
, извините за плохой пример. В нашем коде мы на самом деле просто используем объект внутри запроса NHibernate Criteria -Expression.Eq("thing", myInt)
.
Это не вызывает ошибки компиляции. Я пытался упростить пример, чтобы добраться до сути моего вопроса, не привлекая NHibernate. Извините, если это делает некоторые ответы недействительными. Я просто пытался посмотреть, не пострадает ли производительность, если мы заставим другой метод находить значение вместо явного вызова .Value
.