⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

C# Record 类型详解

掌握 C# 9 引入的 Record 类型,理解其值相等性、不可变性和 with 表达式。 · 难度:入门 · +15XP

什么是 Record 类型?

Record 是 C# 9 引入的一种引用类型,专为不可变数据建模而设计。与 class 不同,Record 默认具有基于值的相等性(比较所有属性),而非引用相等性。

定义 Record

public record Person(string FirstName, string LastName);

编译器会自动生成:构造函数、解构方法、Equals、GetHashcode、ToString 以及 with 表达式支持。

与 Class 的核心区别

特性classrecord
相等性引用相等值相等(所有属性)
可变性默认可变默认不可变(init 属性)
解构需手动实现自动生成
ToString类型名属性名+值

with 表达式

var person1 = new Person("Alice", "Wang");
var person2 = person1 with { LastName = "Li" };
Console.WriteLine(person1); // Person { FirstName = Alice, LastName = Wang }
Console.WriteLine(person2); // Person { FirstName = Alice, LastName = Li }

位置记录 vs 属性记录

位置记录使用主构造函数:public record Point(int X, int Y);。属性记录则显式声明属性:

public record Student
{
    public string Name { get; init; }
    public int Age { get; init; }
}

练习提示

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 148 篇
0 完成
🔥 0