CodeDom生成的代码中的多余括号

问题描述

| 我正在使用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#的代码生成感兴趣,则可以使用CodeSnippetExpression阐明条件,避免使用多余的括号。您的方法更一般。 在幕后,IL不会进行括号解析(这是编译器的工作),因此,如果可能需要括号,则将它们明确包含在内。