Как проверить, является ли String нулевым
Мне интересно, есть ли специальный метод/трюк, чтобы проверить, имеет ли объект String
значение null. Я знаю об String.IsNullOrEmpty
, но хочу отличить строку null
от пустой строки (= ""
).
Должен ли я просто использовать:
if (s == null) {
// blah blah...
}
... или есть другой способ?
Ответы
Ответ 1
Объект не может быть нулевым - значение выражения может быть нулевым. Это стоит сделать разницу ясными в вашем уме. Значение s
не является объектом - это ссылка, которая является либо нулевой, либо относится к объекту.
И да, вы должны просто использовать
if (s == null)
Обратите внимание, что это все равно будет использовать перегруженный == оператор, определенный в строке, но это будет делать правильно.
Ответ 2
Вы можете использовать двойные вопросительные знаки с нулевым объединением для проверки нулей в строке или другом значении типа NULL:
textBox1.Text = s ?? "Is null";
Оператор '??' спрашивает, имеет ли значение 's' значение null, а если не возвращает 's'; если он равен нулю, он возвращает значение справа от оператора.
Подробнее здесь:
https://msdn.microsoft.com/en-us/library/ms173224.aspx
А также стоит отметить нуль-условный оператор?. и? [введено в С# 6.0 (и VB) в VS2015
textBox1.Text = customer?.orders?[0].description ?? "n/a";
Это возвращает "n/a", если описание равно null, или если порядок равен NULL, или если клиент имеет значение null, иначе он возвращает значение описания.
Подробнее здесь:
https://msdn.microsoft.com/en-us/library/dn986595.aspx
Ответ 3
Конечно, вы должны использовать функцию для проверки null и пустое, как показано ниже:
string str = ...
if (!String.IsNullOrEmpty(str))
{
...
}