为什么声明表达式在C#6中被删除了?

LxL*_*LxL 9 c#-6.0

在C#6的预览版中,Microsoft引入了用于声明参数内联的语法糖,如本文所示

http://odetocode.com/blogs/scott/archive/2014/09/15/c-6-0-features-part-3-declaration-expressions.aspx

有谁知道为什么在.NET 4.6的发行版中删除了这个功能?

Mar*_*ski 9

解释是在这个codeplex主题中.

大家好,

在我们长期追求更新C#和Visual Basic体验的最后阶段,我们不得不围绕语言功能集做出一些艰难的决定,这些功能将使其成为下一版本的语言.

这些决策主要基于成本与风险.您在预览中看到的一些功能仍然需要在IDE,调试器等中支持大量下游工作,并且还要在编译器本身中获得高质量.

正如您之前可能听到的那样,语言功能是此版本中的次要考虑因素.主要目标是提供Roslyn价值主张的宏伟第一版:在IDE中深入理解语言,并通过强大而全面的API向所有人提供.为了实现这一目标,我们需要稍微缩减对语言功能的兴趣.

我们正在削减的功能是:

  • C#中的主要构造函数(以及结构中的初始化程序)
  • VB中C#/ Out参数中的声明表达式

它们的特点是仍有大量下游工作.它们也是我们看到的更大故事的潜在开端的特征:初级构造者可以成长为一个成熟的记录特征,并且声明表达将成为模式匹配和解构设施的基石.现在,这些功能将在以后的版本中一起考虑.作为一线希望,我们可以从整体上设计这个连续体,而不是在后期可能过度牵制我们的手.

所有这一切,我很遗憾让这些功能消失,我知道这对你们很多人来说也是如此.您已经就这两个功能提供了非常有价值的反馈,这些知识将直接反映在我们未来的设计工作中.这个令人难以置信的订婚让我感激不尽!我也希望你这次看到更多的"内部运作",即使当你看到我们的计划进展时会导致失望.你的参与增加肯定对我们有益,而且 - 我们希望! - 帮助提高决策的质量和及时性.

还有一些好消息:字符串插值(尚未预览)目前正在寻找它.你应该看到一个首先出现在C#中(我们已经在我们的方法中做了原型),并且稍后在VB.

再次感谢!