C# 关键字Record,从IL,汇编,寄存器,CLR等四个方面彻底的了解它

本文通过IL代码、汇编代码、寄存器和Runtime四个角度,详细剖析C# Record的本质。Record并非新特性,但在.NET 6中备受关注。作者指出Record实为类(Class),并展示了在IL中newobj操作符用于对象实例化,汇编代码显示Record为引用类型,寄存器和Runtime层面进一步证实Record的特性。文章以一个具体的Record实例为例,解释了Record的with关键字如何在CLR层面实现对象拷贝和变量修改。
摘要由CSDN通过智能技术生成

Record关键字并不是最近新增的,而是之前C#9里面就有的,但是在最近.Net 6 LTS版本到来之际,突然有提了出来。(扫描关注以下公众号,学习更多牛逼技术)

有人说它是一个特殊的结构或者结构,我们来看看Record到底什么?

以下为VS2022+.Net 6.0编译结果:
首先我们新建一个控制台应用程序,可以看到新版的Vs2022里面是没有Main函数入口点的。


tangyanzhi tyz = new tangyanzhi() {
    name="zhangsan",age=15};
Console.WriteLine(tyz);
tangyanzhi tyz1 = tyz with {
    age = 16 };
Console.WriteLine(tyz1);
Console.ReadLine();

record tangyanzhi
{
   
    public string name {
    get; set; }
    public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值