- switch on an enumeration data type;
static void SwitchOnEnum()
{
Console.WriteLine("Enter your favorite day of the week: ");
DayOfWeek day;
try
{
day=(DayOfWeek) Enum.Parse(typeof(DayOfWeek),Console.ReadLine());
}
catch (Exception)
{
Console.WriteLine("Invalid input!");
return;
}
switch (day)
{
case DayOfWeek.Sunday:
case DayOfWeek.Saturday:
Console.WriteLine("Weekends");
break;
default:
Console.WriteLine("Working days");
break;
}
}
- switch...case...when...
static void SwitchPattern()
{
object obj = 1;
switch (obj)
{
// Type is checked first and value is also checked using when clause.
case int i when i!=0:
Console.WriteLine($"The object is an integer not equal to zero: {i}");
break;
case string s when s.Equals(""):
Console.WriteLine($"The object is a string not empty: {s}");
break;
case long l:
Console.WriteLine($"The object is long number: {l}");
break;
default:
Console.WriteLine("Else");
break;
}
}
- switch Experessions (C# 8.0)
string captial = FindCountryCaptial("China");
Console.WriteLine(captial);
Console.ReadLine();
static string FindCountryCaptial(string country)
{
return country switch
{
"the USA" => "Washington",
"China" => "Beijing",
_ => "Unknown",
};
}
- switch with Tuples
// switch expression with Tuples
static string ColorMixer(string colorA, string colorB)
{
return (colorA, colorB) switch
{
("red", "green") => "yellow",
("red", "blue") => "cyan",
(_, _) => "unknown",
};
}