How do I declare a var variable with Roslyn?

Jb Evain's answer is correct; I just thought that I would add that the reason for the error is because "var" is not a predefined type. A predefined type is something like "int" or "string".

The syntactic analyzer does not know whether or not you have a class named "var" in scope; "var" is treated not as a predefined type, but rather as just another name for just another type. Only if we cannot find a type in scope named "var" does the semantic analyzer then decide, oh, this must be an implicitly typed local.

The reason for this is because "var" was added in C# 3, and there might be C# 1 or 2 programs that use "var" as the name of a type. We did not want to break those programs.


I'd use:

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

Tags:

C#

Roslyn