我正在使用 CodeDom 生成稍后要编译的代码,并且我注意到某些结构会创建额外的括号集。虽然我知道它们不会影响任何东西,但它们看起来确实很奇怪。
执行此操作的代码示例是这样的:
new CodeConditionStatement(
new CodeBinaryOperatorExpression(
new CodePropertyReferenceExpression(new CodePropertySetValueReferenceExpression(),
"Length"),
CodeBinaryOperatorType.GreaterThan,
new CodePrimitiveExpression(strLength)
),
new CodeThrowExceptionStatement(
new CodeObjectCreateExpression(typeof(ArgumentException),
new CodePrimitiveExpression("The string is too long"),
new CodePrimitiveExpression("value"))
)
)
这会生成以下代码段:
if ((value.Length > 50)) {
throw new System.ArgumentException("The string is too long", "value");
}
同样,我知道额外的括号不会影响任何东西,但如果我做错了什么,我想知道:)
最佳答案
我的猜测是,CodeDom 的作者并不认为更简洁的代码的优势会比使用检测括号需求所需的宝贵 CPU 时间更重要。在其他一些情况下,可能确实需要它们。
关于c# - CodeDom 生成的代码中的额外括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6180370/