In this tutorial, you will learn the key point of C# switch expression for writing more cleaner code.
Beginning with C# 8.0, you can use the switch expression to evaluate a single expression from a list of candidate expressions based on a pattern match with an input expression.
Switch Expression is not the same with Switch Statement. Following is the code example of switch statement:
using System;
using System.Collections.Generic;
using System.Linq;
var memberOne = new Member()
{
cardNo = "100011",
Points = 300,
};
var memberTwo = new Member()
{
cardNo = "100012",
Points = 8000,
};
Console.WriteLine($"MemberOne's tier is: {GetTierOfMember(memberOne)}");
Console.WriteLine($"MemberTwo's tier is: {GetTierOfMember(memberTwo)}");
string GetTierOfMember(Member mem)
{
string tier = "BRONZE";
switch (mem)
{
case Member m when m.Points > 10000:
tier = "BLACK";
break;
case Member m when m.Points > 5000:
tier = "GOLD";
break;
case Member m when m.Points > 1000:
tier = "SILVER";
break;
}
return tier;
}
class Member
{
public string cardNo { get; set; }
public int Points{ get; set; }
}
Rewrite the GetTierOfMember method with switch expression, the code are much more cleaner as following:
string GetTierOfMember(Member mem)
{
string tier = mem.Points switch
{
> 10000 => "BLACK",
> 5000 => "GOLD",
> 1000 => "SILVER",
_ => "BRONZE"
};
return tier;
}
In case the object is null, you can refactor above code with property patterns as following:
string GetTierOfMember(Member mem)
{
string tier = mem switch
{
{Points: > 10000 } => "BLACK",
{Points: > 5000 } => "GOLD",
{Points: > 1000 } => "SILVER",
_ => "BRONZE"
};
return tier;
}
Summary
In this tutorial, you have learned that how to write more cleaner code with C# switch expression instead of switch statement.