Лучший способ получить доступ к значениям, допускающим значение null, в c#

В нашем коде 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

Я обновил примеры, чтобы использовать vars, потому что в нашем коде мы на самом деле не используем типы int, извините за плохой пример. В нашем коде мы на самом деле просто используем объект внутри запроса NHibernate Criteria -Expression.Eq("thing", myInt).

Это не вызывает ошибки компиляции. Я пытался упростить пример, чтобы добраться до сути моего вопроса, не привлекая NHibernate. Извините, если это делает некоторые ответы недействительными. Я просто пытался посмотреть, не пострадает ли производительность, если мы заставим другой метод находить значение вместо явного вызова .Value.

5
задан shanabus 2 May 2012 в 14:49
поделиться