Pattern Matching in C# Switch
Seamless Integration
Switch…Case block is used to provide handling of flow of the program logic based on certain outcome of a variable. Most of the time, we evaluate the variable and depending on exact match, we pass the flow to a case handler like this:
switch (color)
{
case “Red”: gotoRedHandler();
break;
case “Green”: gotoGreenHandler();
break;
default: gotoRainbowHandler();
break;
}
However, when we want to match a partial existence of a text (string comparison – String.contains()), we can do it like below:
switch (overviewType){
case var positionType when (overviewType.Contains("position type")):
jobDetail.PositionType = overviewValue;
break;
case var experience when (overviewType.Contains("experience")):
jobDetail.ExperienceRequired = overviewValue;
break;
case var opening when (overviewType.Contains("opening")):
jobDetail.AvailablePositions = overviewValue;
break;
}