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

时间:2015-10-16 22:01:59

标签: 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的发行版中删除了这个功能?

2 个答案:

答案 0 :(得分:9)

解释在这个codeplex主题中。

  

大家好,

     

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

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

     

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

     

我们正在削减的功能是:

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

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

     

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

     

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

     

再次感谢!

答案 1 :(得分:1)

原因在于https://github.com/dotnet/roslyn/issues

但主要原因是它已经完成,并且决定将其纳入C#6可能会限制为C#7及其他目标规划的功能。