Самый короткий способ проверить на пустой указатель и присвоить другое значение, если нет

Вы ищете следующие сигналы: enter-notify-event и leave-notify-event .

67
задан Alexander Abakumov 20 July 2018 в 16:19
поделиться

7 ответов

Попробуйте следующее:

this.approved_by = IsNullOrEmpty(planRec.approved_by) ? "" : planRec.approved_by.toString();

Вы также можете использовать оператор объединения с нулем, как говорили другие - поскольку никто не привел пример, который работает с вашим кодом, вот один:

this.approved_by = planRec.approved_by ?? planRec.approved_by.toString();

Но этот пример работает только потому, что возможное значение для this.approved_by совпадает с одним из потенциальных значений, которые вы хотите установить. Во всех остальных случаях вам нужно будет использовать условный оператор, как я показал в моем первом примере.

87
ответ дан 24 November 2019 в 14:26
поделиться

Начиная с C# 8.0, можно ли использовать?? = оператор для замены кода формы

if (variable is null)
{
    variable = expression;
}

со следующим кодом:

variable ??= expression;
[еще 115] информация здесь

4
ответ дан 24 November 2019 в 14:26
поделиться

Оператор объединения (??) - это то, что вам нужно, я считаю.

29
ответ дан 24 November 2019 в 14:26
поделиться

Чтобы расширить ответ @ Dave ... если planRec.approved_by уже является строкой

this.approved_by = planRec.approved_by ?? "";
9
ответ дан 24 November 2019 в 14:26
поделиться

Вы ищете оператор объединения C #: ??. Этот оператор принимает левый и правый аргумент. Если левая часть оператора имеет значение null или обнуляемое значение без значения, он вернет правый аргумент. В противном случае вернет левую.

var x = somePossiblyNullValue ?? valueIfNull;
24
ответ дан 24 November 2019 в 14:26
поделиться

Думаю, лучшее, что вы можете придумать, это

this.approved_by = IsNullOrEmpty(planRec.approved_by) ? string.Empty
                                                      : planRec.approved_by.ToString();

Конечно, поскольку вы намекаете на тот факт, что authorized_by является объектом (который не может быть равным ""), это будет переписано как

this.approved_by = (planRec.approved_by ?? string.Empty).ToString();
25
ответ дан 24 November 2019 в 14:26
поделиться

You can also do it in your query, for instance in sql server, google ISNULL and CASE built-in functions.

1
ответ дан 24 November 2019 в 14:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: