LiteralExpression - ArgumentOutOfRangeException

时间:2013-02-03 03:15:32

标签: c# literals roslyn

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

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

在Roslyn CTP3下抛出ArgumentOutOfRangeException

2 个答案:

答案 0 :(得分:3)

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

在您的示例中,您可以使用以下命令创建表达式:

Syntax.LiteralExpression(SyntaxKind.CharacterLiteralExpression, Syntax.Literal('a'))

答案 1 :(得分:2)

你不应该提供第二个参数,即实际的文字。