我想生成一个返回类型为Foo[]
的方法。我的代码看起来大致如此(使用using static SyntaxFactory
):
var methodDecl = MethodDeclaration(
returnType: ArrayType(IdentifierName("Foo")),
identifier: Identifier("Bar"),
parameterList: ParameterList(),
body: Block(ReturnStatement(LiteralExpression(SyntaxKind.NullLiteralExpression))),
// ...
);
当我在调试Visual Studio窗口中执行重构时,它不会生成[]
类型的Foo[]
部分:
Foo Bar()
{
return null;
}
如何让它生成实际的Foo[]
类型?
答案 0 :(得分:4)
数组类型的[]
部分称为排名说明符。等级说明符描述了数组的大小和维度,即la int[10,3][12]
。
ArrayType
工厂方法创建的ArrayTypeSyntax
根本没有RankSpecifiers
。要生成常用的Foo[]
语法,您需要为其提供一个空的排名说明符。
ArrayType(IdentifierName("Foo"), SingletonList(ArrayRankSpecifier()))
对我来说似乎有些愚蠢的默认,因为1D阵列是目前最常见的。据我所知,这在任何地方都没有记载。