对于我的一生,我无法弄清楚为什么这行代码:
var literalExpressionSyntax =
Syntax.LiteralExpression(SyntaxKind.CharacterLiteralExpression);
ArgumentOutOfRangeException
在 Roslyn CTP3 下抛出一个。
第二个参数是可选的原因是文本对于某些 SyntaxKind
值是隐含的。例如,如果您传递SyntaxKind.TrueLiteral
第一个参数,那么您可以省略第二个参数。但是,当第二个参数基于第一个参数没有合理的默认值时,我们会抛出ArgumentOutOfRangeException
.
在您的示例中,您可以使用以下命令创建表达式:
Syntax.LiteralExpression(SyntaxKind.CharacterLiteralExpression, Syntax.Literal('a'))
你不应该提供第二个参数,它是实际的文字。