Csharp/C#教程:C#9新特性init only setter的使用分享

C#9中新支持了init关键字,这是一个特殊的setter,用来指定只能在对象初始化的时候进行赋值,另外支持构造器简化的写法,比如:Target-typednewexpression在已知类型的情况下可以使用new()来代表构造方法的简化用法,可以简化字段的声明,也可以简化一次声明多个相同类型的变量

Sample

来看一个示例,我们定义一个测试用的Person类,测试代码如下:

publicclassPerson { publicintAge{get;init;} publicstringName{get;init;} publicstringDescription{get;set;} publicoverridestringToString() { return$"Name:{Name}(Age:{Age})"; } }

init是一个特殊的setter适用于实例属性,被标记为init的属性,只能在实例化的时候通过初始化器来赋值,实例化操作完成后不允许再修改值。

varp1=newPerson() { Name="Michael", Age=10 }; Console.WriteLine(p1); //compilererror,不能对init的字段再赋值 //p1.Age=12; //Target-Typednewexpression,C#9新特性 Personp2=new() { Name="Jane", Age=10, },p3=new() { Name="Alice" }; Console.WriteLine(p2); Console.WriteLine(p3);

init的等效写法,init类似于set,但是init对应的字段会是一个readonly的字段,来保证只能在构造器中或者初始化器中被赋值,另外编译器会做检查如果是init,会有一个特殊的标识,在初始化后再赋值的时候就会报错,类似于下面这样:

internalclassTestInitModel { privatereadonlystring_name; publicstringName { get=>_name; init=>_name=value; } }

我们上述就是C#学习教程:C#9新特性init only setter的使用分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/903573.html

(0)
上一篇 2021年10月21日
下一篇 2021年10月21日

精彩推荐