对于我的一生,我无法弄清楚为什么这行代码:

var literalExpressionSyntax =
     Syntax.LiteralExpression(SyntaxKind.CharacterLiteralExpression);

在Roslyn CTP3下抛出ArgumentOutOfRangeException

最佳答案

第二个参数可选的原因是某些SyntaxKind值隐含了文本。例如,如果为第一个参数传递SyntaxKind.TrueLiteral,则可以省略第二个参数。但是,当基于第一个参数的第二个参数没有合理的默认值时,我们将抛出ArgumentOutOfRangeException

在您的示例中,您可以使用以下方法创建表达式:
Syntax.LiteralExpression(SyntaxKind.CharacterLiteralExpression, Syntax.Literal('a'))

10-01 12:56