switch multiple from fall ejemplos control cannot c# string switch-statement semantics

multiple - C#Switch con String.IsNullOrEmpty



switch case c# string (7)

¿Qué pasa con tu declaración de switch ejemplo?

switch (text) { case null: case "": foo(); break; case "hi": bar(); break; }

Funciona (y por alguna razón eso me sorprendió, pensé que se quejaría o se colgaría en el caso null ) y está claro.

Para el caso, ¿por qué te preocupa String.Empty ? Me falta algo aquí.

¿Es posible tener un interruptor en C # que comprueba si el valor es nulo o está vacío, no "", pero String.Empty ? Sé que puedo hacerlo:

switch (text) { case null: case "": break; }

¿Hay algo mejor, porque no quiero tener una gran lista de declaraciones IF?

Estoy tratando de reemplazar:

if (String.IsNullOrEmpty(text)) blah; else if (text = "hi") blah


De la documentación de String.Empty :

El valor de este campo es la cadena de longitud cero, "".

Interpreto que esto significa que no hay diferencia entre "" y String.Empty . ¿Por qué estás tratando de distinguir entre ellos?


Sugeriría algo como lo siguiente:

switch(text ?? String.Empty) { case "": break; case "hi": break; }

¿Es esto lo que estás buscando?


Una cadena vacía es "", que es igual a String.Empty. La razón por la que puede poner "" en una declaración de caso pero no en "String.Empty" es que "Empty" es un campo de la clase "String" y "" es en realidad un valor contante.

Se permiten valores constantes en los casos, String.Empty es un campo y podría modificarse en tiempo de ejecución. (En este caso, seguirá siendo el mismo, pero no todos los campos estáticos de cada clase son valores constantes).

En el caso de ''si'', esa condición se evalúa en tiempo de ejecución y no requiere un valor constante.

Espero que esto explique por qué.


qué tal si

if (string.isNullOrEmpty(text)) { //blah } else { switch (text) { case "hi": }

}


¡Algo que acabo de notar es que puedes combinar if / else y cambiar las declaraciones! Muy útil cuando necesita verificar las condiciones previas.

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; } }