Используйте тернарный оператор в C# - PullRequest
0 голосов
/ 03 августа 2020

Я получаю сообщение об ошибке при написании этой строки кода. Я хочу проверить, равно ли значение 0, а затем получить это значение или получить пустое или нулевое значение.

double h = model.WorkHours.Value>=0 ? model.WorkHours.Value:"";

Ответы [ 2 ]

9 голосов
/ 03 августа 2020

Что происходит при условии false? Это:

double h = "";

Значение string не может быть установлено равным double. По умолчанию для double вместо этого будет 0:

double h = model.WorkHours.Value >= 0 ? model.WorkHours.Value : 0;

Или, как можно более конкретно:

double h = model.WorkHours.Value >= 0 ? model.WorkHours.Value : 0.0d;

Вы также можете положиться на default, если вы например:

double h = model.WorkHours.Value >= 0 ? model.WorkHours.Value : default(double);

Если вы хотите, чтобы значение действительно было пустым , вы можете рассмотреть возможность использования double? (сокращение для Nullable<double>):

double? h = model.WorkHours.Value >= 0 ? model.WorkHours.Value : new Nullable<double>();
3 голосов
/ 03 августа 2020

Так как двойное значение не имеет null или пустой строки в качестве допустимого значения, если вы действительно хотите, чтобы значение по умолчанию было null или пустой строкой, вам нужно будет выполнить одно из следующих действий.

Используйте необязательный тип вместе с явным преобразованием типа:

double? h = model.WorkHours.Value >= 0 ? (double?) model.WorkHours.Value : null;

Используйте строку:

string h = model.WorkHours.Value >= 0 ? model.WorkHours.Value.ToString() : "";
...