switch sintaxis selectiva resueltos estructura ejemplos definicion c# condition

c# - sintaxis - switch default



Combinando mĂșltiples expresiones condicionales en C# (9)

¿Necesitas algo así?

int x = 5; if((new int[]{5,6}).Contains(x)) { Console.WriteLine("true"); } Console.ReadLine();

En C #, en lugar de hacer if(index == 7 || index == 8) , ¿hay alguna forma de combinarlos? Estoy pensando en algo como if(index == (7, 8)) .


Escribe tus propios métodos de extensión para que puedas escribir

if (index.Between(7, 8)) {...}

donde Entre se define como:

public static bool Between (this int a, int x, int y) { return a >= x && a <= y; }


No hay forma de hacerlo, pero ciertamente podría hacer un rango usando if( index >=7 && index <= 8 ) . Pero darle una lista de números requerirá que cree una matriz o un objeto de lista y luego use un método para hacer esto. Pero eso es simplemente una exageración.


No hay forma, en el conjunto actual de sintaxis de C #, de combinar múltiples operandos del lado derecho para pasarlos a un solo operador binario según mi conocimiento.


Podría poner los valores que necesita comparar en una matriz en línea y usar un método de extensión Contains. Vea este artículo para empezar.

Varios fragmentos que demuestran el concepto:

int index = 1; Console.WriteLine("Example 1: ", new int[] { 1, 2, 4 }.Contains(index)); index = 2; Console.WriteLine("Example 2: ", new int[] { 0, 5, 3, 4, 236 }.Contains(index));

Salida:

Example 1: True Example 2: False


Podrías usar esto:

if (new List<int>() { 7, 8 }.Contains(index))


Puedes lograr esto con un método de extensión.

public static bool In<T>(this T obj, params T[] collection) { return collection.Contains(obj); }

Entonces...

if(index.In(7,8)) { ... }


if ((new int[]{7,8}).Contains(index))


switch (GetExpensiveValue()) { case 7: case 8: // do work break; }

Obviamente, esto requiere más código, pero puede evitar que evalúe una función varias veces.