I learned, that if you can use switch cases, you should use them, because they are better in performance. Which one of the following code snippets would be more conventional? And how many cases that behave exactly the same are still ok for switch statements and when should you start using if statements?
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);
Or maybe this one?
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);
Starting from C#9, there is a new pattern matching which makes the switch very well readable:
string symbol = value switch
{
>=1 and <=10 => Convert.ToString(value),
11 => "J",
12 => "Q",
13 => "K",
14 => "A",
_ => ""
};
Online demo: https://dotnetfiddle.net/tovo7d