记录结构的目的是什么?



c# 9增加了record类型,这是一个新的引用类型,使用基于值的相等。

c# 10引入了record struct语法来定义与record(https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/record)相似的值类型。

创建一个引用类型的值类型版本,并且该类型还具有基于值的相等性,这似乎是不寻常的——这肯定会消除使用该类型的大部分好处。

为什么要声明一个record struct呢?

我还错过了什么吗?

使用record struct的主要好处如下:

  1. 它允许您将struct定义简化为单行
  2. 它为==!=操作符提供了重载,因此这些操作符可以用于比较,而不需要额外的代码来定义操作符重载。对于struct,默认情况下只能使用Equals()方法进行比较。
  3. 它提供了比struct更全面的默认ToString()方法。record structToString()方法将生成record struct名称、其属性名称及其值。struct默认的ToString()方法只产生struct的名称。
  4. 它提供了比struct性能优势(高达20倍快- https://anthonygiretti.com/2021/08/03/introducing-c-10-record-struct/)

在某些方面,record类似于提供默认操作符重载的值元组,并且具有更接近record structToString()方法(值元组的ToString()方法产生其所有属性的值)。

然而,值元组只能在动态中使用,而record struct可以用来定义将被重复使用的类型。

注意

record/record class默认是不可变的,但record struct不是,所以如果你想要一个不可变的record struct,你必须使用readonly record struct

<<h3>最后评论/h3>考虑到使用record struct比使用struct的好处,除非有非常特殊的原因,否则最好总是使用record struct

似乎record structstruct的增强,保留了旧类型,因此struct的现有行为/功能不会被删除。

相关内容

  • 没有找到相关文章

最新更新