Как проверить, является ли String нулевым - PullRequest
32 голосов
/ 26 сентября 2011

Мне интересно, есть ли специальный метод / трюк, чтобы проверить, является ли объект String нулевым.Я знаю о методе String.IsNullOrEmpty, но хочу отличить строку null от пустой строки (= "").

Должен ли я просто использовать:

if (s == null) {
    // blah blah...
}

... или есть другой способ?

Ответы [ 4 ]

57 голосов
/ 26 сентября 2011

Объект не может быть нулевым - значение выражения может быть нулевым.Это стоит прояснить разницу в вашем уме.Значение s не является объектом - это ссылка , которая либо равна нулю, либо относится к объекту.

И да, вы должны просто использовать

if (s == null)

Обратите внимание, что при этом по-прежнему будет использоваться перегруженный оператор ==, определенный в строке, но это будет правильно.

10 голосов
/ 29 апреля 2016

Конечно, вы должны использовать функцию для проверки на ноль и пусто, как показано ниже:

string str = ...
if (!String.IsNullOrEmpty(str))
{
...
}
9 голосов
/ 15 февраля 2016

Вы можете использовать объединенные двойные вопросительные знаки с нулем, чтобы проверить наличие нулей в строке или другом типе значений, допускающих значение NULL:

textBox1.Text = s ?? "Is null";

Оператор '??' спрашивает, является ли значение 's' нулевым, и если нет, возвращает 's'; если он равен нулю, он возвращает значение справа от оператора.

Больше информации здесь: https://msdn.microsoft.com/en-us/library/ms173224.aspx

И также стоит отметить, что есть нуль-условный оператор? и? [введено в C # 6.0 (и VB) в VS2015

textBox1.Text = customer?.orders?[0].description ?? "n/a";

Возвращает «н / д», если описание равно нулю, или если заказ пуст, или если клиент пуст, в противном случае возвращается значение описания.

Больше информации здесь: https://msdn.microsoft.com/en-us/library/dn986595.aspx

0 голосов
/ 13 августа 2018

Вы можете проверить с нулевым или числовым значением в следующем комментарии.

Сначала вы можете добавить ссылку «Microsoft.VisualBasic» в приложение ypur.

bool b = Microsoft.VisualBasic.Information.IsNumeric ("null"); bool c = Microsoft.VisualBasic.Information.IsNumeric ("abc");

В вышеприведенном, b и c должны быть False.

Надеюсь, это поможет вам.

...