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