簡體   English   中英

如何使用 Roslyn 聲明 var 變量?

[英]How do I declare a var variable with Roslyn?

我有以下代碼,但我找不到如何獲取 var TypeSyntax 有任何想法嗎?

Syntax.LocalDeclarationStatement(                   
    declaration: Syntax.VariableDeclaration(
        type: Syntax.PredefinedType(Syntax.Token(SyntaxKind.VarKeyword)),
        variables: Syntax.SeparatedList(
        Syntax.VariableDeclarator(
            identifier: Syntax.Identifier(name)))
        )
    )
);

這會失敗,並出現一個參數異常,上面寫着:“關鍵字”

我會使用:

Syntax.LocalDeclarationStatement(
    declaration: Syntax.VariableDeclaration(
        type: Syntax.IdentifierName(Syntax.Token(SyntaxKind.VarKeyword)),
        variables: Syntax.SeparatedList(new[] { 
            Syntax.VariableDeclarator(
                identifier: Syntax.Identifier(name)) })));

Jb Evain 的回答是正確的; 我只是想我會補充一點,錯誤的原因是因為“var”不是預定義的類型 預定義類型類似於“int”或“string”。

語法分析器不知道您是否在范圍內有一個名為“var”的類; “var” 不被視為預定義類型,而只是另一種類型的另一個名稱。 只有當我們在范圍內找不到名為“var”的類型時,語義分析器才會決定,哦,這必須是隱式類型的本地。

這是因為在 C# 3 中添加了“var”,並且可能有 C# 1 或 2 程序使用“var”作為類型的名稱。 我們不想破壞這些程序。

不是對您的問題的精確答案,但實現相同效果的另一種(更簡單)方法是使用 Syntax.ParseStatement:

Syntax.ParseStatement("var " + name);

為了簡化對此類問題的回答,我編寫了一個名為 Quoter 的工具,它可以為任何給定的 C# 程序生成語法樹 API 調用:

https://roslynquoter.azurewebsites.net

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM