5

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

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

ArgumentOutOfRangeException在 Roslyn CTP3 下抛出一个。

4

2 回答 2

3

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

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

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

于 2013-02-03T03:49:58.227 回答
2

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

于 2013-02-03T03:24:30.997 回答