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


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

c#怎么使用record types c# 10 record struct用法

在 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

Chatbase Chatbase

从你的知识库中构建一个AI聊天机器人

Chatbase 117 查看详情 Chatbase
public readonly record struct Point(double X, double Y)
{
    public double DistanceFromOrigin => Math.Sqrt(X * X + Y * Y);
<pre class="brush:php;toolbar:false;">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>(T Value, bool Success);</t>

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

以上就是C#怎么使用Record Types C# 10 Record Struct用法的详细内容,更多请关注其它相关文章!


# 迭代  # 网页游戏推广的网站  # b2b商城营销推广  # 保定响应式网站建设价格  # 吴忠外包网站建设  # 电影网站的推广方法  # 包头网站推广视频大全  # 商业网站建设协议  # 温州海外社媒营销推广  # 白城seo优化公司平台  # 理发店营销推广方案  # 也不  #   # 这是  # 最佳选择  # 自动生成  # 如何处理  # 高性能  # 自定义  # 不支持  # 递归  # c#  # 区别  # 状态码 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 电脑桌面图标怎么变大变小_Windows个性化设置第一课【新手入门】  QQ网页版官方账号登录入口 QQ网页版网页版入口快速导航  PHP中获取HTTP响应状态消息:方法与限制  《美篇》取消会员自动续费方法  《edge浏览器》关闭翻译功能方法  MacBook Pro词典使用指南  OpenWeatherMap API:通过城市名称获取天气预报数据指南  《360浏览器》设置摄像头权限方法  《盗墓笔记手游》技能介绍  如何在mysql中使用索引提示_mysql索引提示优化方法  QQ邮箱PC端登录页面_QQ邮箱网页版登录界面  跨语言测试实践:使用Python Selenium测试现有J*a Web项目  WooCommerce购物车:强制显示所有交叉销售商品教程  Microsoft Edge网页字体太淡看不清怎么办_Microsoft Edge字体渲染优化技巧  Linux如何优化系统启动流程_Linux启动项优化方案  PHP中动态类名访问的类实例类型提示与静态分析实践  快手极速版在线体验区 快手极速版网页体验入口  Win10显卡驱动安装失败怎么办 Win10使用DDU彻底卸载驱动【解决】  CSS如何使用outline-offset与颜色组合突出元素边框  J*aScript二进制处理_ArrayBuffer与Blob  sublime如何撤销关闭的标签页_sublime重新打开已关闭文件技巧  vivo浏览器怎么离线保存网页 vivo浏览器下载完整页面以便无网络时阅读  《火影忍者:木叶高手》快速升级攻略  一点万象签到领积分指南  个人所得税办理入口 个人所得税综合所得年度汇算入口  汽水音乐官方网站登录入口_汽水音乐网页版进入链接  如何使用 composer 和 aop-php 实现 AOP 编程?  Dagster资产间数据传递与用户配置管理教程  如何测试您的网站全球打开速度-网站海外测速工  edge浏览器怎么修改语言为中文_Edge界面语言切换教程  C++怎么解决数值计算中的精度问题_C++浮点数误差与数值稳定性分析  电脑没有声音了怎么办 电脑声音问题的全面排查与修复指南【详解】  抖音评论无法发送如何修复 抖音评论功能操作指南  抖音官网入口快速访问 抖音网页版账号注册解析  如何自定义苹果手机铃声  C++如何实现单例模式_C++线程安全的单例模式写法  uc浏览器官网网页版使用 uc浏览器官网免费在线首页  鲨鱼剧场app金币获取方法  《随手记》关闭首页消息推送方法  2025考研成绩查询时间入口分享  被称为海蜈蚣的海洋动物是  企查查官网和爱企查 企查查企业查询官网入口  如何用mysql开发用户注册登录功能_mysql用户注册登录数据库设计  yandex网页版直接登录 yandex官方入口平台访问方法  《猎聘》筛选猎头岗位方法  阿里旺旺电脑网页版入口 阿里旺旺电脑版网页登录入口  《优志愿》修改手机号方法  Word如何将文字快速转成表格 Word文本转换成表格功能使用技巧【效率】  什么是Satis,如何用它搭建一个私有的composer仓库?  《密马》发布账号方法 

 2025-12-19

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.