全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C#中的Record类型有什么优势?C# 9新特性Record与Class的用法区别

record专为数据建模设计,强调“数据是什么”,默认不可变且支持值相等性,适合承载不变数据如API结果;class侧重行为与状态变化,适用于需动态修改的场景。

Record类型是C# 9引入的,专为简化数据模型设计而生。它和class最核心的区别在于,record强调“数据是什么”,而class强调“能做什么”。当你需要一个主要用来承载数据、且不希望数据被随意更改的对象时,record就是更优的选择。

数据为中心 vs 行为为中心

选择record还是class,关键看这个类型的主要用途。

  • 用record:当你定义的是用户信息、配置项、API返回结果这类以存储和传输数据为主的对象。它的属性值确定后就不该轻易改变。
  • 用class:当你需要定义银行账户、游戏角色这类拥有复杂状态和行为,且状态会随时间或操作而改变的对象。

自带不可变性与值相等性

这是record两大核心优势,class默认不具备,需要大量手动代码才能实现。

  • 不可变性 (Immutability):record的属性默认是只读的,只能在创建时通过构造函数设置。一旦对象生成,其内部数据就不能再被修改。这天然保证了线程安全,多个线程可以放心读取同一个record实例,不用担心数据被意外篡改。
  • 值相等性 (Value-based Equality):两个record对象是否相等,取决于它们所有属性的值是否都相同,而不是看它们是不是同一个内存地址。编译器会自动重写Equals()GetHashCode()ToString()方法,省去了手写这些易错代码的麻烦。

语法极简,减少样板代码

定义一个数据类,record的代码量远少于class。

  • 位置记录 (Positional Records):一行代码搞定。例如:public record Person(string Name, int Age);。编译器会自动生成私有字段、公共只读属性、构造函数、解构函数以及重写的相等性方法。
  • with表达式:因为record不可变,所以不能直接修改属性。但可以用with关键字基于原对象创建一个新副本,并指定要更改的属性。例如:var newPerson = oldPerson with { Age = 30 };。这既保持了原对象的完整性,又方便地得到了更新后的数据。

基本上就这些。record让开发者能用极少的代码,获得一个安全、清晰、易于比较的数据容器,特别适合现代应用开发中的数据传输场景。


# 应用开发  # 区别  # c#  # String  # 构造函数  # int  # class  # public  # 线程  # var  # 对象  # 当你  # 这类  # 重写  # 专为  # 的是  # 这是  # 多个  # 就不  # 可以用  # 适用于 


相关文章: 如何快速生成凡客建站的专业级图册?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  浅谈Javascript中的Label语句  高性能网站服务器配置指南:安全稳定与高效建站核心方案  建站VPS推荐:2025年高性能服务器配置指南  网站制作说明怎么写,简述网页设计的流程并说明原因?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  建站主机类型有哪些?如何正确选型  建站主机选虚拟主机还是云服务器更好?  建站之星24小时客服电话如何获取?  如何快速搭建高效香港服务器网站?  如何用5美元大硬盘VPS安全高效搭建个人网站?  家具网站制作软件,家具厂怎么跑业务?  平台云上自助建站如何快速打造专业网站?  企业微网站怎么做,公司网站和公众号有什么区别?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何快速生成ASP一键建站模板并优化安全性?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  建站之星免费版是否永久可用?  网站制作网站,深圳做网站哪家比较好?  如何确保西部建站助手FTP传输的安全性?  如何在香港服务器上快速搭建免备案网站?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  建站VPS配置与SEO优化指南:关键词排名提升策略  外贸公司网站制作哪家好,maersk船公司官网?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  如何通过西部建站助手安装IIS服务器?  c# 在ASP.NET Core中管理和取消后台任务    *服务器网站为何频现安全漏洞?  定制建站方案优化指南:企业官网开发与建站费用解析  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  如何做静态网页,sublimetext3.0制作静态网页?  如何快速查询网站的真实建站时间?  如何在云指建站中生成FTP站点?  Android自定义listview布局实现上拉加载下拉刷新功能  微课制作网站有哪些,微课网怎么进?  如何通过多用户协作模板快速搭建高效企业网站?  南平网站制作公司,2025年南平市事业单位报名时间?  建站之星导航如何优化提升用户体验?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  头像制作网站在线制作软件,dw网页背景图像怎么设置?  ,石家庄四十八中学官网?  建站之星如何助力企业快速打造五合一网站?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。