ternario simplificado sharp operator operadores operador logicos jerarquia ejemplos condicional c# .net

simplificado - operadores logicos c# ejemplos



Cómo combinar || operadores en declaración de condición (8)

Aquí hay otra alternativa:

bool x = new[] { "1", "5", "9" }.Any(a => a == "5"); //x == true bool y = new[] { "1", "5", "9" }.Any(a => a == "8"); //y == false

Es mejor usar .Contains(foo) en este caso, ya que la flexibilidad de la lambda se desperdicia aquí. Si había una expresión compleja que debía hacerse, Cualquiera sería más útil.

Esta pregunta ya tiene una respuesta aquí:

En lugar de

if (foo == "1" || foo == "5" || foo == "9" ... )

Me gusta combinarlos de manera similar al siguiente (que no funciona):

if (foo == ("1" || "5" || "9" ... ))

¿Es eso posible?


Desafortunadamente no, tu mejor opción es crear un método de extensión

public static bool IsOneOf<T>(this T value, params T[] options) { return options.Contains(value); }

y puedes usarlo así:

if (foo.IsOneOf("1", "5", "9")) { ... }

Siendo genérico, se puede usar para cualquier tipo (int, cadena, etc.).


No puedes hacerlo de esta manera. En cambio, puedes hacer esto:

string[] validValues = new string[] { "1", "5", "9", "whatever" }; if(validValues.Contains(foo)) { // do something }


Puede hacer esto, si eso es aceptable para usted:

if ( (new string[] {"1","9","5","6" }).Contains(foo)) { }


Puede usar la declaración de switch :

switch (foo) { case "1": case "5": case "9": // ... break; case "2": case "4": // ... break; }

Si foo es una cadena, preste atención a la sensibilidad de mayúsculas y minúsculas.


Si tiene múltiples condiciones if, siempre debería considerar usar declaraciones de switch ya que el compilador creará Jumptables siempre que sea posible para aumentar la velocidad. Deberías echar un vistazo here para la prueba de velocidad. A tener en cuenta aquí es que si el número de condiciones es lo suficientemente grande como para cubrir gastos generales, el compilador de C # también creará un objeto HashTable.

Entonces este es un mejor enfoque

switch (foo) { case "1": case "5": case "9": // ... break; case "2": case "4": // ... break; }


Si todas las opciones son solo un caracter, puedes hacer:

if ("159".IndexOf(foo) != -1) { //do something }


Una posible opción es esta:

switch (foo) { case "1": case "5": case "9": // your code here break; }

Otra posible opción es esta:

var vals = new string[] { "1", "5", "9" }; if (vals.Contains(foo)) { // your code here }