面试题答案
一键面试模式匹配基本概念
模式匹配是一种强大的功能,它允许在运行时检查对象的类型和结构,并根据匹配结果执行相应的代码。它提供了一种简洁、可读的方式来处理不同类型的对象或数据结构,而无需编写复杂的类型检查和转换代码。
使用 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
对象进行模式匹配。如果 shape
是 Circle
类型,会执行 Math.PI * circle.Radius * circle.Radius
计算圆的面积;如果是 Rectangle
类型,会执行 rectangle.Width * rectangle.Height
计算矩形面积;如果是其他不支持的类型,则抛出异常。