Обнуляем значение int равным нулю, если значение меньше нуля - PullRequest
1 голос
/ 20 января 2020

Использование c# Мне было интересно, есть ли способ привести int для возврата 0, если ноль или меньше 0

  number = ((int?) nullableNum) ?? 0

Это вернет 0, если ноль, но я хочу способ возврата 0, если меньше 0

Ответы [ 3 ]

4 голосов
/ 20 января 2020

Вы можете использовать Math.Max для этой цели, что сделает код более читабельным:

var number = Math.Max(0, nullableNum ?? 0)

или даже лучше использовать GetValueOrDefault вместо слияния нуль. Он извлекает значение текущего Nullable<T> объекта или значение по умолчанию базового типа, которое равно 0 для Nullable‹int›

var number = Math.Max(0, nullableNum.GetValueOrDefault());
1 голос
/ 20 января 2020

Вы можете использовать следующий синтаксис для этого

var number = nullableNum.HasValue && nullableNum.Value > 0 ? nullableNum.Value : 0;

Вы проверяете, что nullableNum HasValue и является ли оно Value больше 0 или нет и вернуть Value. Если условие ложно (nullableNum равно null и его значение меньше 0), просто верните 0

Другой и более простой вариант - использовать метод GetValueOrDefault для этого он возвращает значение по умолчанию для базового типа (0 для int)

var defaultValue = nullableNum.GetValueOrDefault();
var number = defaultValue < 0 ? 0 : defaultValue;
0 голосов
/ 20 января 2020

Если вы хотите использовать однострочник (где nullable - ваше значение или ноль):

int? nullable = null;
int zero = (nullable < 0 ? 0 : nullable) ?? 0;
...