MST

星途 面试题库

面试题:C#中模式匹配的基础应用

在C#中,简述模式匹配的基本概念,并举例说明如何使用switch语句结合模式匹配来处理不同类型的对象。
15.4万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

模式匹配基本概念

模式匹配是一种强大的功能,它允许在运行时检查对象的类型和结构,并根据匹配结果执行相应的代码。它提供了一种简洁、可读的方式来处理不同类型的对象或数据结构,而无需编写复杂的类型检查和转换代码。

使用 switch 语句结合模式匹配处理不同类型对象示例

假设有一个包含不同形状的类继承体系,如下:

public abstract class Shape { }
public class Circle : Shape
{
    public double Radius { get; set; }
}
public class Rectangle : Shape
{
    public double Width { get; set; }
    public double Height { get; set; }
}

可以使用 switch 语句结合模式匹配来计算不同形状的面积,示例代码如下:

public static double CalculateArea(Shape shape)
{
    return shape switch
    {
        Circle circle => Math.PI * circle.Radius * circle.Radius,
        Rectangle rectangle => rectangle.Width * rectangle.Height,
        _ => throw new ArgumentException("Unsupported shape type", nameof(shape))
    };
}

在上述代码中,switch 语句对传入的 shape 对象进行模式匹配。如果 shapeCircle 类型,会执行 Math.PI * circle.Radius * circle.Radius 计算圆的面积;如果是 Rectangle 类型,会执行 rectangle.Width * rectangle.Height 计算矩形面积;如果是其他不支持的类型,则抛出异常。