[英]What Is The Purpose Of A Record Struct?
C# 9 添加了record
类型,这是一种新的引用类型,使用基于值的相等性。
C# 10 引入了record struct
语法来定义具有类似record
属性的值类型 ( https://learn.microsoft.com/en-us/do.net/csharp/language-reference/builtin-types/record )。
创建一个类型的值类型版本似乎是不寻常的,该类型被创建为引用类型也具有基于值的相等性——这肯定会消除使用该类型的大部分好处。
你为什么要声明一个record struct
?
还有什么我想念的吗?
使用record struct
的主要好处如下:
struct
定义简化为一行==
和!=
运算符提供重载,因此它们可用于比较而无需额外代码来定义运算符重载。 对于struct
,默认情况下您只能使用Equals()
方法进行比较。struct
更全面的默认ToString()
方法。 record struct
ToString()
方法将生成record struct
名称、其属性名称及其值。 struct
default ToString()
方法仅生成struct
名称。struct
的性能优势(最多快 20 倍 - https://anthonygiretti.com/2021/08/03/introducing-c-10-record-struct/ ) 在某些方面, record
类似于提供默认运算符重载的值元组,并具有更接近record struct
的 ToString( ToString()
方法(值元组的ToString()
方法生成其所有属性的值)。
但是,值元组只能即时使用,而record struct
可用于定义将重复使用的类型。
注意: record
/ record class
默认是不可变的,但record struct
不是,所以如果你想要一个不可变的record struct
,你必须使用readonly record struct
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.