Csharp/C#教程:C#vnext中的主要构造函数分享


C#vnext中的主要构造函数

语言function实现状态通过C#Chat引起了我的注意。 关于这个现有问题中未涉及的一些function,我有几个问题 。

一些新function很明显,例如仅限Getter的自动属性

public int Y { get; } = y; 

太棒了

但其他人我不清楚……


主要构造函数

 class Point(int x, int y) { … } 

这可能是我所知的差距,但我之前没有遇到过“主要构造函数”这个术语,但是一些研究似乎表明,基本上这是定义以下内容的捷径

 class Point { private int x; private int y; public Point(int x, int y) { this.x = x; this.y = y; } } 

几乎,但不完全。 默认情况下,主构造函数参数不会捕获到字段中; 但是,它们可以在实例成员初始值设定项中访问(并且只在那里),因此您可以使用它们显式初始化字段或属性:

 class Point(int x, int y) { public int X { get; } = x; public int Y { get; } = y; } 

(请注意,在这种情况下, 创建支持字段,但对于属性,而不是构造函数参数)

但是您也可以使用访问修饰符声明参数,在这种情况下,它们将被捕获为字段,并且可以从所有实例成员访问:

 class Point(public readonly int x, public readonly int y) { } 

(如您所见,您还可以为字段指定其他修饰符,例如readonly

是的,您可以拥有其他非主要构造函数。 但是,他们都需要使用通常的: this(...)语法来调用主构造函数。

如上所述,没有隐含的支持字段; 仅当您在主构造函数参数上显式指定访问修饰符时,才会创建支持字段。


编辑:此function已被撤销,不会在C#6中(可能在C#7中,forms略有不同)

上述就是C#学习教程:C#vnext中的主要构造函数分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

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

ctvol管理联系方式QQ:251552304

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

(0)
上一篇 2022年1月10日
下一篇 2022年1月10日

精彩推荐