C # Mudar com String.IsNullOrEmpty
-
08-07-2019 - |
Pergunta
É possível ter uma chave em C # que verifica se o valor é nulo ou vazio não "", mas String.Empty
? Eu sei que eu posso fazer isso:
switch (text)
{
case null:
case "":
break;
}
Existe algo melhor, porque eu não quero ter uma grande lista de instruções IF?
I'mm tentando substituir:
if (String.IsNullOrEmpty(text))
blah;
else if (text = "hi")
blah
Solução
Gostaria de sugerir algo como o seguinte:
switch(text ?? String.Empty)
{
case "":
break;
case "hi":
break;
}
É isso que você está procurando?
Outras dicas
errada do que com o seu exemplo declaração switch
?
switch (text)
{
case null:
case "":
foo();
break;
case "hi":
bar();
break;
}
Ele funciona. (E por algum motivo que me surpreendeu - eu pensei que iria reclamar ou falhar em caso null
) e é claro
Para essa matéria, por que você está preocupado com String.Empty
? Eu estou faltando alguma coisa aqui.
como sobre
if (string.isNullOrEmpty(text))
{
//blah
}
else
{
switch (text)
{
case "hi":
}
}
A partir da documentação de String.Empty
:
O valor deste campo é o cadeia de comprimento zero, "".
Eu interpreto isto para dizer que não há diferença entre ""
e String.Empty
. Por que você está tentando distinguir entre eles?
Uma cadeia vazia é "", que é igual a String.Empty. A razão que você pode put "" em um comunicado caso, mas não "String.Empty" é que "Empty" é um campo da classe "String" e "" é na verdade um valor contant.
Os valores constantes são permitidas em casos, String.Empty é um campo e pode ser alterado em tempo de execução. (Neste caso, ele permanecerá o mesmo, mas nem todos os campos estáticos de cada classe são valores constantes.)
No caso de 'se', essa condição é avaliada em tempo de execução e se faz não requerem um valor constante.
Espero que isso explica o porquê.
Algo que eu notei é que você pode combinar if / else e Switch! Muito útil quando a necessidade de verificar pré-condições.
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;
}
}