C# 12 Primary Constructor 的隐藏用法

本文介绍了C#12中PrimaryConstructor的新用法,如何在声明空的record类和struct时提供简洁的语法,尤其在测试和简化代码方面。示例展示了如何利用PrimaryConstructor处理无参和带参数的情况,以及反编译后的结果证实了这一特性。
摘要由CSDN通过智能技术生成

C# 12 Primary Constructor 的隐藏用法

Intro

之前写过一篇 primary constructor 的文章 C# 12 中的 Primary Constructor,最近发现得益于 primary constructor 在声明空类型时也可以更加简单,有些情况下要声明一个空的类型时会比较有帮助,尤其是测试代码中,所以再写一个补充说明

Sample

针对于 record 我们可以使用一行代码来声明一个类型或结构体

record class Job(string title);
record struct Point(int X, int Y);

对于一个空的类型,也可以这样声明:

record EmptyJob;

得益于 C# 12 的 primary construtor 特性我们针对空的 class 和 struct 也可以这样使用,使用方式如下:

Console.WriteLine(nameof(AbstractAnimal));
Console.WriteLine(nameof(AbstractSharp));

file abstract class AbstractAnimal;  
file struct AbstractSharp;

而这不仅仅限于没有参数的形式,例如下面这个示例:

file class Animal(string name) : AbstractAnimal
{
    public string Name => name;
}

file sealed class Cat(string name) : Animal(name);

这样也是可以的,空的类型体都可以用 ; 来进行简化,再看一下带参数的 struct(仅供参考

file struct Point3D(int x, int y, int z);

是不是更加简单了呢

来看看反编译的结果

efd9f8fdf95176cdfed0f2478d149860.png

AbstractAnimal

afc8785e079f598b110ec26be171e0aa.png

AbstractSharp

f877f91cea52b0fa6a48cdd64bf2eef8.png

Cat

d0aeb5541663f9045c46b536066c9764.png

Point3D

References

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值