if(products.HasValue && products !=0)
{
// do some calculation
}
Это работает, потому что if
использует Оценка короткого замыкания : условие products!=0
оценивается, только если product.HasValue
истинно.
Edit:
Этот конкретный оператор if также будет работать без оценки короткого замыкания, начиная с null!=0
- элюирование короткого замыкания полезно, если вам нужно получить доступ к члену переменной, добавив перед ним нулевую проверку в операторе if. *
Также, как указывалось, Nullable<T>
предоставляет метод GetValueOrDefault()
для выполнения той же проверки, что и выше (@Bradley получил мой +1) - в данном случае это вопрос личных предпочтений / читабельности, который следует использовать.
Кроме того, real для ответа на ваш вопрос следует использовать Int32.TryParse()
вместо «ручного» подтверждения ввода.