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