渐进式编程课
C# 目录
第 18 课2026.09.23

按课程对象的具名属性判断时长,避免依赖组件声明顺序。

第 18 课:属性模式匹配 record

  • 日期:2026-09-23
  • 课程序号:第 18 课
  • 知识点:C# 属性模式

用途或适用场景

按课程对象的具名属性判断时长,避免依赖组件声明顺序。

核心概念

属性模式 { Minutes: >= 10 } 按属性名读取 record;与上一课的位置模式一样,它只匹配,不修改原值。

最小代码或操作示例

csharp
var lesson = new Lesson("C#", 10);
var label = lesson switch {
    { Minutes: >= 10 } => "较长课程",
    _ => "短课"
};
Console.WriteLine(label);
public record Lesson(string Title, int Minutes);

3~5 分钟练习

把课程时长改为 5,重新运行。

参考答案

属性模式不再匹配,输出“短课”。

与上一课的联系

沿用第 17 课的 Lesson(Title, Minutes) 与 switch,其弃元让标题不参与判断;本课只把按位置匹配改为按 Minutes 属性名匹配;完成后下一课可同时判断标题和时长两个属性。

时效校验

时效校验:2026-09-24(Microsoft Learn 当前 C# 模式匹配参考;属性模式自 C# 8 可用,record 组合用法需 C# 9+,未见废弃标记)。

官方参考