Checking object types with multiple if-else is messy. Switch expressions with type patterns are cleaner.
Old If-Else Chain:
object obj = GetData();
if (obj is string s)
{
Console.WriteLine($"String: {s.Length} chars");
}
else if (obj is int i)
{
Console.WriteLine($"Number: {i * 2}");
}
else if (obj is List list)
{
Console.WriteLine($"List: {list.Count} items");
}
Switch Expression:
var message = obj switch
{
string s => $"String: {s.Length} chars",
int i => $"Number: {i * 2}",
List list => $"List: {list.Count} items",
null => "Object is null",
_ => "Unknown type"
};
Console.WriteLine(message);
Cleaner, more concise, compiler-verified!
