Gig*_*igi 11 c# c#-6.0 vs-2015-preview
使用C#6.0中新的Expression-Bodied Members功能,我们可以采用如下方法:
public void Open()
{
Console.WriteLine("Opened");
}
Run Code Online (Sandbox Code Playgroud)
...并将其更改为具有同等功能的简单表达式:
public void Open() => Console.WriteLine("Opened");
Run Code Online (Sandbox Code Playgroud)
然而,对于构造函数而言,情况并非如此.像这样的代码不能编译:
private DbManager() => Console.WriteLine("ctor");
Run Code Online (Sandbox Code Playgroud)
这也不是:
private DbManager() => {}
Run Code Online (Sandbox Code Playgroud)
有没有理由为什么构造函数不能从表达体成员特征中受益,并且必须以传统方式声明?
i3a*_*non 14
它会比实用更令人困惑.特别是当您向另一个构造函数添加调用时.
这是设计说明的直接引用:
构造函数在头部中以这个(...)或base(...)初始化器的形式具有语法元素,这些元素在胖箭头之前看起来很奇怪.更重要的是,构造函数几乎总是副作用语句,并且不返回值.
以更一般的方式:
总而言之,表达式主体允许在方法和用户定义的运算符(包括转换)上,它们表示从函数返回的值,以及属性和索引器,它们表示从getter返回的值,并暗示没有setter .
现在已经发布了c#7.0,现在可以使用表达式主体的构造函数了。
private DbManager() => Console.WriteLine("ctor");
Run Code Online (Sandbox Code Playgroud)
在c#7.0中工作正常
| 归档时间: |
|
| 查看次数: |
1807 次 |
| 最近记录: |