以下语法是什么?它不是编译,而是来自旧的代码库。
private static JsonSerializer JsonSerializer { get; } = new JsonSerializer()
编译器抱怨说:
Error 1 Invalid token '=' in class, struct, or interface member declaration.
答案 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)。