奇怪的属性赋值语法?

时间:2014-07-02 03:59:20

标签: c#

以下语法是什么?它不是编译,而是来自旧的代码库。

private static JsonSerializer JsonSerializer { get; } = new JsonSerializer()

编译器抱怨说:

Error   1   Invalid token '=' in class, struct, or interface member declaration.

2 个答案:

答案 0 :(得分:3)

你提到的是Getter-only auto-properties并且它不是C#的一部分,还没有! 它是C#新语言功能的一部分。它们是使用Roslyn,.Net编译器平台实现的。

Roslyn为您提供对C#和VB编译器内部部件的访问。您可以完全访问编译结果,甚至可以操作C#本身。

您将在C#6中看到许多其他功能,例如声明表达式:

int.TryParse(s, out var x);

异常过滤器:

catch(E e) if (e.Count > 5) { … } 

要查看新语言特征的完整列表及其当前状态,请在codeplex上的官方Roslyn页面中查看this entry

如果你对这个想法感兴趣并且想要深入研究,我建议你观看这个build conference video。它可以让你全面了解Roslyn在C#中的作用。

答案 1 :(得分:0)

搜索后,原来是.NET编译器平台(Roslyn)。