Aprendí que si puede usar cajas de interruptores, debe usarlas, porque tienen un mejor rendimiento. ¿Cuál de los siguientes fragmentos de código sería más convencional? ¿Y cuántos casos que se comportan exactamente igual siguen estando bien para las sentencias switch y cuándo debería empezar a usar las sentencias if?
Console.Write("Insert a card value: "); int value = Int32.Parse(Console.ReadLine()); string symbol = ""; switch(value) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 9: case 10: symbol = Convert.ToString(value); break; case 11: symbol = "J"; break; case 12: symbol = "Q"; break; case 13: symbol = "K"; break; case 14: symbol = "A"; break; } Console.WriteLine("The " + symbol + " has a value of " + value);¿O tal vez este?
Console.Write("Insert a card value: "); int value = Int32.Parse(Console.ReadLine()); string symbol = ""; if (value <= 10) symbol = Convert.ToString(value); else if (value == 11) symbol = "J"; else if (value == 12) symbol = "Q"; else if (value == 13) symbol = "K"; else if (value == 14) symbol = "A"; Console.WriteLine("The " + symbol + " has a value of " + value);A partir de C#9, hay una nueva coincidencia de patrones que hace que el cambio sea muy legible:
string symbol = value switch { >=1 and <=10 => Convert.ToString(value), 11 => "J", 12 => "Q", 13 => "K", 14 => "A", _ => "" };Demostración en línea: https://dotnetfiddle.net/tovo7d