在C#中,可以使用switch语句和模式匹配表达式来实现模式匹配。模式匹配表达式在C# 7.0及更高版本中引入,可以让开发者更方便地进行复杂的条件判断。
以下是一个简单的例子,展示了如何使用switch语句和模式匹配表达式来实现模式匹配:
public static void Main()
{
object obj = new Circle(5);
switch (obj)
{
case Square s:
Console.WriteLine($"Square with side length {s.SideLength}");
break;
case Circle c:
Console.WriteLine($"Circle with radius {c.Radius}");
break;
default:
Console.WriteLine("Unknown shape");
break;
}
}
public class Square
{
public int SideLength { get; }
public Square(int sideLength)
{
SideLength = sideLength;
}
}
public class Circle
{
public int Radius { get; }
public Circle(int radius)
{
Radius = radius;
}
}
在上面的代码中,我们首先定义了一个基类Shape,然后定义了Square和Circle两个子类。在Main方法中,我们创建了一个object类型的变量obj,并将其赋值为一个Circle对象。接着使用switch语句对obj进行模式匹配,根据obj的实际类型执行不同的逻辑。
需要注意的是,模式匹配表达式在C#中还可以使用when子句来进一步过滤条件,以更精确地匹配目标类型。模式匹配表达式的灵活性和强大性使得在C#中实现模式匹配变得更加简单和直观。