C# 什么是「;GlobalStatementSyntax“;Roslyn中的语法节点类型

C# 什么是「;GlobalStatementSyntax“;Roslyn中的语法节点类型,c#,roslyn,C#,Roslyn,我在调查Roslyn中实现MemberDeclarationSyntax的语法节点类,遇到了GlobalStatementSyntax类。 什么样的代码使用GlobalStatementSyntax节点生成语法树?为什么GlobalStatementSyntax源自MemberDeclarationSyntax?这样的节点能代表某一类型的成员吗?两分钟的实验证实,如果您使用新功能,您会得到这些节点。也就是说,如果您的整个计划是: Console.WriteLine(args.Count); (

我在调查Roslyn中实现
MemberDeclarationSyntax
的语法节点类,遇到了
GlobalStatementSyntax
类。
什么样的代码使用
GlobalStatementSyntax
节点生成语法树?为什么
GlobalStatementSyntax
源自
MemberDeclarationSyntax
?这样的节点能代表某一类型的成员吗?

两分钟的实验证实,如果您使用新功能,您会得到这些节点。也就是说,如果您的整个计划是:

Console.WriteLine(args.Count);
(无
,无
无效主
等)

然后,生成此结构:

CompilationUnit()
.WithMembers(
    SingletonList<MemberDeclarationSyntax>(
        GlobalStatement(
            ExpressionStatement(
                InvocationExpression(
                    MemberAccessExpression(
                        SyntaxKind.SimpleMemberAccessExpression,
                        IdentifierName("Console"),
                        IdentifierName("WriteLine")))
                .WithArgumentList(
                    ArgumentList(
                        SingletonSeparatedList<ArgumentSyntax>(
                            Argument(
                                MemberAccessExpression(
                                    SyntaxKind.SimpleMemberAccessExpression,
                                    IdentifierName("args"),
                                    IdentifierName("Count"))))))))))
.NormalizeWhitespace()
编译单元()
.与成员(
单音表(
全球陈述(
表达陈述(
调用表达式(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
标识名称(“控制台”),
标识符名称(“写入线”))
.WithArgumentList(
论据列表(
单音分隔列表(
论据(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
标识符名称(“args”),
标识名称(“计数”()()())
.normalize空白()

两分钟的实验证实,如果使用新功能,您将获得这些功能。也就是说,如果您的整个计划是:

Console.WriteLine(args.Count);
(无
,无
无效主
等)

然后,生成此结构:

CompilationUnit()
.WithMembers(
    SingletonList<MemberDeclarationSyntax>(
        GlobalStatement(
            ExpressionStatement(
                InvocationExpression(
                    MemberAccessExpression(
                        SyntaxKind.SimpleMemberAccessExpression,
                        IdentifierName("Console"),
                        IdentifierName("WriteLine")))
                .WithArgumentList(
                    ArgumentList(
                        SingletonSeparatedList<ArgumentSyntax>(
                            Argument(
                                MemberAccessExpression(
                                    SyntaxKind.SimpleMemberAccessExpression,
                                    IdentifierName("args"),
                                    IdentifierName("Count"))))))))))
.NormalizeWhitespace()
编译单元()
.与成员(
单音表(
全球陈述(
表达陈述(
调用表达式(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
标识名称(“控制台”),
标识符名称(“写入线”))
.WithArgumentList(
论据列表(
单音分隔列表(
论据(
MemberAccessExpression(
SyntaxKind.SimpleMemberAccessExpression,
标识符名称(“args”),
标识名称(“计数”()()()())("计数"())))
.normalize空白()

为什么GlobalStatementSyntax从MemberDeclarationSyntax派生而来?为什么GlobalStatementSyntax从MemberDeclarationSyntax派生而来?