Yun*_*iza 13 c# types language-concepts c#-10.0
C# 9 添加了record类型,这是一种使用基于值的相等性的新引用类型。
C# 10 引入了record struct用于定义具有与record( https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/record ) 类似属性的值类型的语法。
创建一个类型的值类型版本似乎很不寻常,该类型被创建为具有基于值的相等性的引用类型 - 这肯定会消除使用该类型的大部分好处。
你为什么要声明 a record struct?
我还缺少什么吗?
Yun*_*iza 17
使用的主要好处record struct如下:
struct定义简化为一行==和!=运算符的重载,因此可以将它们用于比较,而无需额外的代码来定义运算符重载。使用 时struct,您只能使用Equals()默认方法进行比较。ToString()比struct. 该record struct ToString()方法将生成record struct名称、其属性的名称及其值。struct默认方法ToString()仅生成struct名称。struct(速度提高了 20 倍 - https://anthonygiretti.com/2021/08/03/introducing-c-10-record-struct/)在某些方面,record类似于提供默认运算符重载的值元组,并且具有ToString()更接近的方法record struct(值元组的ToString()方法生成其所有属性的值)。
但是,值元组仅动态使用,而record struct可用于定义将重复使用的类型。
record/record class默认情况下是不可变的,但实际上record struct并非如此,因此如果您想要一个不可变的record struct,则必须使用readonly record struct.
record struct考虑到使用over的好处struct,最好总是首选record struct,除非有一些非常具体的理由不这样做。
这似乎record struct是 的增强struct,保留了旧类型,因此现有的行为/功能struct不会被删除。
| 归档时间: |
|
| 查看次数: |
5693 次 |
| 最近记录: |