Record

简介: 【6月更文挑战第11天】

记录(Record)是C# 9.0引入的一种新的类型,它提供了一种创建不可变类型的简便方式,并且具有一些内置的行为,比如值相等性比较、非破坏性变化以及支持继承等特性。以下是关于.NET Core中记录(Record)的详细介绍:

什么是记录(Record)

记录是一个修饰符,用于定义一个引用类型,它提供了封装数据的内置功能,并且支持不可变的数据模型。在C# 10中,record可以与class一起使用来明确表示引用类型,也可以使用record struct来定义值类型[^4^]。

定义一个记录

使用record(或record class)可以定义引用类型,而record struct则用于定义值类型。记录的主构造函数参数称为位置参数,编译器会为这些参数生成公共属性。例如:

public record Person(string Name, string Address, int Age);

此外,记录也可以创建为可变类型,具有可变属性和字段:

public record Person
{
   
    public required string FirstName {
    get; set; }
    public required string LastName {
    get; set; }
};

记录类型提供的功能

  • 不可变性:记录默认是不可变的,这有助于创建线程安全的类型,并且可以保持哈希码不变。
  • 值相等性:记录类型重写了Equals方法和GetHashCode方法,以支持基于值的相等性比较。
  • 非破坏性变化:使用with表达式可以创建记录的副本并修改其属性,而不必改变原始对象。
  • 继承:记录支持继承,可以创建更具体的记录类型。
  • 内置格式化:记录类型重写了ToString方法,提供了一种内置的方式来格式化记录的字符串表示。

引用类型记录和值类型记录的区别

  • 使用recordrecord class声明的是引用类型,而record struct声明的是值类型。
  • recordreadonly record struct中,属性是不可变的(使用init访问器),而在record struct中,属性是可变的(使用getset访问器)。

Record常用属性

  • 位置语法:在创建记录实例时,可以使用位置参数来声明和初始化属性。
  • 不可变性positional recordpositional readonly record struct声明了init-only属性,而positional record struct声明了可读写属性。
  • 值相等性:记录类型自动实现了基于值的相等性比较。
  • 非破坏性变化:通过with表达式可以实现非破坏性变化。
  • 继承:记录支持继承,可以创建层次结构。
目录
相关文章
|
开发工具 Android开发 git
Git(2) 实用技巧:打包、补丁、环境切换、修改记录和加速
Git实用技巧包括:打包差异文件或补丁、在Git和Repo环境间切换、批量修改提交记录中的用户名和邮箱、设置Git命令别名以及解决下载速度慢和超时问题。这些技巧能提升Git使用效率和便捷性。
354 0
|
存储 NoSQL API
一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库
一个小巧、快速、轻量级的 .NET NoSQL 嵌入式数据库
466 0
如何用vcftools从VCF文件中提取某条染色体信息
如何用vcftools从VCF文件中提取某条染色体信息
|
11月前
|
监控 前端开发 JavaScript
Webpack 中 HMR 插件的工作原理
【10月更文挑战第23天】可以进一步深入探讨 HMR 工作原理的具体细节、不同场景下的应用案例,以及与其他相关技术的结合应用等方面的内容。通过全面、系统地了解 HMR 插件的工作原理,能够更好地利用这一功能,为项目的成功开发提供有力保障。同时,要不断关注技术的发展动态,以便及时掌握最新的 HMR 技术和最佳实践。
|
7月前
|
弹性计算 人工智能 架构师
一文揭秘|如何速成RAG+Agent框架大模型应用搭建(二)
一文揭秘|如何速成RAG+Agent框架大模型应用搭建
465 4
ly~
|
12月前
|
SQL 开发框架 Java
FileRun 支持哪些文件格式?
FileRun 支持多种文件格式,涵盖图像、办公文档、CSV、PDF、文本、电子书、存档、视频及音频文件等。提供预览、编辑、创建等功能,兼容性广泛,支持第三方服务集成,满足多样化需求。
ly~
228 1
|
数据可视化 图形学 Python
|
消息中间件 监控 负载均衡
中间件消息订阅者(Subscriber)
【6月更文挑战第10天】
163 1
|
存储 算法 文件存储
详细解读7z文件格式及其源码的分析(三)
详细解读7z文件格式及其源码的分析(三)
535 0
|
机器学习/深度学习 语音技术 Python
使用Python实现语音识别与处理模型
使用Python实现语音识别与处理模型
302 0