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
Foi útil?

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;
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top