C # Переключается с помощью строки.IsNullOrEmpty
-
08-07-2019 - |
Вопрос
Возможно ли иметь переключатель в C #, который проверяет, является ли значение null или empty не "", а String.Empty
?Я знаю, что смогу это сделать:
switch (text)
{
case null:
case "":
break;
}
Есть ли что-то лучше, потому что я не хочу иметь большой список операторов IF?
Я пытаюсь заменить:
if (String.IsNullOrEmpty(text))
blah;
else if (text = "hi")
blah
Решение
Я бы предложил что-то вроде следующего:
switch(text ?? String.Empty)
{
case "":
break;
case "hi":
break;
}
Это то, что вы ищете?
Другие советы
Что не так с вашим примером switch
? Р>
switch (text)
{
case null:
case "":
foo();
break;
case "hi":
bar();
break;
}
Это работает (и по какой-то причине меня это удивило - я думал, что это будет жалоба или сбой в случае null
), и это понятно.
В таком случае, почему вы беспокоитесь о String.Empty
? Я что-то здесь упускаю.
как насчет
if (string.isNullOrEmpty(text))
{
//blah
}
else
{
switch (text)
{
case "hi":
}
}
Из документации . из String.Empty
:
Значение этого поля строка нулевой длины "quot;".
Я понимаю, что это означает, что между " "
и String.Empty
нет никакой разницы. Почему вы пытаетесь различить их?
Пустая строка " " ;, которая равна String.Empty. Причина, по которой вы можете поставить " " в заявлении case, но не в "String.Empty" Является ли это "пустым" является полем класса "String" и " на самом деле постоянное значение. Р>
Постоянные значения допускаются в случаях, String.Empty является полем и может быть изменено во время выполнения. (В этом случае оно останется тем же, но не все статические поля каждого класса являются постоянными значениями.)
В случае 'if' это условие оценивается во время выполнения, и если not требует постоянного значения. Р>
Надеюсь, это объясняет почему.
Я только что заметил, что вы можете комбинировать if / else и переключать операторы! Очень полезно, когда нужно проверить предварительные условия.
if (string.IsNullOrEmpty(text))
{
//blah
}
else switch (text)
{
case "hi":
Console.WriteLine("How about a nice game of chess?");
break;
default:
break;
}
string StrMode;
if (!string.IsNullOrEmpty(StrMode))
{
switch (StrMode.Trim())
{
case "Souse":
{
//Statement Eg:
MesssageBox.Show("Souse");
break;
}
case "Company Agent":
{
//Statement Eg:
MesssageBox.Show("Souse");
break;
}
default:
return;
}
}