2014-07-02 100 views
0

什麼是下面的語法?這不是編譯,而是來自舊的代碼庫。奇怪的屬性賦值語法?

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

編譯器抱怨:

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

什麼版本是這樣的舊代碼庫? –

+0

你確定它曾經編譯過嗎?我不認爲這是有效的。 – Blorgbeard

回答

3

你提到什麼是Getter-only auto-properties,它不是C#的一部分,還沒有!它是C#的新語言功能的一部分。它們已經使用Roslyn,.Net編譯器平臺實現。

羅斯林爲您提供訪問的C#和VB編譯器內部零件。您可以完全訪問編譯結果,甚至可以操作C#本身。

有幾十個其他功能,你會看到在C#6,如宣言表達式:

int.TryParse(s, out var x); 

異常過濾器:

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

看到新語言的完整列表FEATURS和他們的當前狀態,在codeplex的官方Roslyn頁面查看this entry

如果你有點想法並想深入研究,我會建議你看看這個build conference video。它可以讓你大致瞭解Roslyn在C#中的角色。

0

周圍搜索後,它原來是.NET編譯器平臺(羅斯林)。