编辑
2025-09-27
C#
00

目录

摘要
正文
什么是Record类型?
Record类型的优点
Record类型的缺点
嵌套记录:
继承:

摘要

C# 9.0引入的一个新特性就是record类型。在这篇文章中,我们将探讨record类型,它的用途,优点,缺点,以及一些例子。

正文

什么是Record类型?

record类型是一种引用类型,提供了内置功能来封装数据。与类和结构不同,record类型默认是不可变的,这意味着一旦创建了record实例,它就不能被修改。

image.png

C#
public record Person(string Name, int Age); public Form1() { InitializeComponent(); } private void btnTest_Click(object sender, EventArgs e) { Person p1=new Person("张三",99); MessageBox.Show(p1.Name); }

Record类型的优点

  • 不可变性:record类型默认是不可变的,这可以帮助防止由数据更改引起的错误。
  • 基于值的相等性:与类不同,record类型使用基于值的相等性。如果两个record实例的类型相同且所有的值都相等,那么这两个实例就是相等的。
  • With表达式:record类型可以使用with表达式来创建一个新的实例,并更改部分值,这对于创建不可变数据的修改副本非常有用。

以下是with表达式的一个例子:

C#
var john = new Person("John", 30); var olderJohn = john with { Age = 31 };

image.png

C#
private void btnTest_Click(object sender, EventArgs e) { Person p1=new Person("张三",99); Person p2 = new Person("张三", 99); MessageBox.Show((p1 == p2).ToString()); }

Record类型的缺点

  • 性能:由于record类型是不可变的,任何修改都会导致创建一个新的实例。如果管理不当,这可能会导致性能问题。
  • 兼容性:record类型是在C# 9.0中引入的,因此它们与旧版本的C#不兼容。

嵌套记录:

C#
public record Address(string Street, string City, string Country); public record Employee(string Name, int Age, Address Address);

继承

C#
public record Animal(string Name); public record Dog(string Name, string Breed) : Animal(Name);

record类型是C#语言的一个强大的补充。它们提供了一种清洁和高效的方式来封装数据在一个不可变的结构中,这在各种编程场景中都非常有用。然而,像任何特性一样,它们应该谨慎使用,考虑到它们的优点和缺点。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!