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


相关推荐: 小米手机屏幕失灵乱跳怎么办 屏幕触控问题自检与临时解决方法【应急】  word怎么将图片设置为页面背景并不影响打印_Word图片背景设置方法  mysql如何限制远程访问_mysql远程访问限制方法  《桃源记2》资源采集攻略  消除网页顶部意外空白线:CSS布局常见问题与解决方案  macosmonterey系统外接显示器驱动怎么安装_macosmonterey外接显示器驱动与分辨率调整  动漫岛在线动漫网 动漫岛动漫在线观看官方入口  《海贝音乐》均衡器设置方法  C++ priority_queue怎么用_C++优先队列底层实现与自定义比较器  英国搜索:多数英国人认为语言搜索是未来搜索  解决PHP MySQL数据库更新无响应:SQL查询语法错误解析  如何在CSS中使用伪类选择器_hover实现悬停效果  《杖剑传说》食谱大全  t3出行如何使用微信支付  我的世界官方网址入口 我的世界游戏主页直达入口  偃武诸葛亮阵容搭配推荐  《知到》打卡课程方法  Coolpad5890 ROM刷机包  《全民k歌》网页版最新登录入口一览  Python中处理嵌套字典与列表的数据提取与过滤教程  Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置  CSS如何使用outline-offset与颜色组合突出元素边框  响应式设计中动态背景颜色条的实现指南  VS Code快捷键when上下文子句的妙用  创建快捷方式启动系统保护  获取WooCommerce产品在后台编辑页面的分类ID  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  Python中深度嵌套字典与列表的数据提取与条件过滤指南  J*aScript模块加载器_RequireJS原理分析  电脑桌面图标怎么变大变小_Windows个性化设置第一课【新手入门】  J*aScript事件处理:优化键盘输入与表单提交的实践指南  汽水音乐在线入口 汽水音乐网页端官方页面快速打开  C++如何使用CMake构建项目_C++ CMakeLists.txt编写入门教程  键盘测试软件哪个好_键盘故障检测工具推荐  如何在CSS中使用absolute实现登录弹窗居中_transform translate结合  铁路12306官网登录入口 铁路12306在线购票官方平台  在J*a里什么是行为抽象_抽象行为对代码复用的提升作用  PHP utf8_encode 字符编码转换陷阱与解决方案  J*aScript大数运算_BigInt使用指南  快递物流路径揭秘  《随手记》启用语音备注方法  抖音赚钱快速入门_新手必看的抖音赚钱步骤  QQ网页版官方账号登录入口 QQ网页版网页版入口快速导航  微信客户端怎么查看二维码_微信客户端个人二维码查看方法  B站怎么快速升级 B站用户等级提升攻略【详解】  《oppo商城》维修服务位置  Teambition网盘如何共享文件  百度识图图像分析 百度识图识别平台  如何查询个人病历记录  Lar*el 中高效执行多列更新:单次查询实现 

 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.