全网整合营销服务商

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

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

C#怎么使用Record Types C# 10 Record Struct用法

C# 10 中的 record struct 是轻量级、不可变、值语义的结构类型,自动实现相等比较、ToString 等,需显式或隐式 readonly,不支持 with 表达式和继承,适用于小数据模型与高性能场景。

在 C# 10 中,record struct 是一种轻量级、不可变(默认)、值语义的结构类型,适合用于数据载体(如 DTO、返回值、配置项等),相比 class-based record 更省内存、避免堆分配,也比普通 struct 更易用(自动实现 EqualsGetHashCodeToString==/!=)。

record struct 基本写法

语法和 record class 类似,但用 struct 关键字替代 class,且必须是 readonly(隐式或显式):

public readonly record struct Person(string Name, int Age);

这样就自动生成了:

  • 只读字段 NameAge
  • 位置构造函数(可直接传参初始化)
  • 基于值的相等比较(== / !=
  • 重写的 EqualsGetHashCodeToString
  • 解构支持(var (name, age) = person;

带命名字段和自定义成员的 record struct

你也可以显式声明字段、属性,甚至添加方法或自定义 ToString

public readonly record struct Point(double X, double Y)
{
    public double DistanceFromOrigin => Math.Sqrt(X * X + Y * Y);
public override string ToString() => $"({X:F2}, {Y:F2})";

}

注意:所有字段/属性仍需保持只读(initget-only),否则编译报错。不支持 with 表达式(这是 record class 的特性,record struct 没有引用语义,也不需要“复制并修改”)。

和普通 struct、record class 的关键区别

  • vs 普通 struct:不用手动实现 Equals/GetHashCode,不用写构造函数和 ToString,语义更清晰
  • vs record class:值类型(栈分配)、不可继承、无 with、无 Deconstruct 自动生成(除非显式写)、不能为 null(除非是可空类型如 Person?
  • 适用场景:小数据模型(如坐标、颜色、HTTP 状态码包装、API 响应体片段)、函数式风格参数传递、高性能路径中的临时值对象

使用注意事项

  • 必须加 readonly(C# 10 要求;省略会编译失败)
  • 不能包含字段初始化器(如 int Count = 0;),但可以用 init 属性或构造函数赋值
  • 不支持继承(不能 : BaseRecord),也不能被继承
  • 泛型支持良好:public readonly record struct Result(T Value, bool Success);

基本上就这些。record struct 不复杂但容易忽略它的值语义和 readonly 强制性——把它当成“带自动契约的轻量数据包”来用最自然。


#   # 状态码  # 区别  # c#  # NULL  # count  # 构造函数  # bool  # int  # 继承  #   # class  # 值类型  # 空类型  # public  # Struct  # 泛型  # var  # 对象  # http  # 不支持  # 自定义  # 高性能  # 自动生成  # 这是  # 也不  # 是一种  # 隐式  # 可以用  # 适用于 


相关文章: 深圳企业网站制作设计,在深圳如何网上全流程注册公司?  动图在线制作网站有哪些,滑动动图图集怎么做?  建站之星后台密码遗忘?如何快速找回?  简历在线制作网站免费版,如何创建个人简历?  如何在香港免费服务器上快速搭建网站?  如何用景安虚拟主机手机版绑定域名建站?  想学网站制作怎么学,建立一个网站要花费多少?  如何安全更换建站之星模板并保留数据?  如何生成腾讯云建站专用兑换码?  如何配置支付宝与微信支付功能?  如何确保FTP站点访问权限与数据传输安全?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  如何在局域网内绑定自建网站域名?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  如何零成本快速生成个人自助网站?  如何挑选最适合建站的高性能VPS主机?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  C#怎么使用委托和事件 C# delegate与event编程方法  早安海报制作网站推荐大全,企业早安海报怎么每天更换?  北京建设网站制作公司,北京古代建筑博物馆预约官网?  香港网站服务器数量如何影响SEO优化效果?  如何快速搭建响应式可视化网站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  在线教育网站制作平台,山西立德教育官网?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  公司门户网站制作流程,华为官网怎么做?  小型网站建站如何选择虚拟主机?  已有域名和空间,如何快速搭建网站?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  定制建站方案优化指南:企业官网开发与建站费用解析  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何选择服务器才能高效搭建专属网站?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  广平建站公司哪家专业可靠?如何选择?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  ,网站推广常用方法?  如何在云主机快速搭建网站站点?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  魔方云NAT建站如何实现端口转发?  建站主机选购指南与交易推荐:核心配置解析  移民网站制作流程,怎么看加拿大移民官网?  如何用y主机助手快速搭建网站?  广东企业建站网站优化与SEO营销核心策略指南  网站制作公司排行榜,抖音怎样做个人官方网站  如何通过西部数码建站助手快速创建专业网站?  如何在IIS中配置站点IP、端口及主机头?  如何在服务器上三步完成建站并提升流量? 

您的项目需求

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