C# 9.0引入的一个新特性就是record
类型。在这篇文章中,我们将探讨record
类型,它的用途,优点,缺点,以及一些例子。
record
类型是一种引用类型,提供了内置功能来封装数据。与类和结构不同,record
类型默认是不可变的,这意味着一旦创建了record
实例,它就不能被修改。
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
表达式来创建一个新的实例,并更改部分值,这对于创建不可变数据的修改副本非常有用。以下是with
表达式的一个例子:
C#var john = new Person("John", 30);
var olderJohn = john with { Age = 31 };
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
类型是在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 许可协议。转载请注明出处!