微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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不会进行括号解析(这是编译器的工作),因此,如果可能需要括号,则将它们明确包含在内。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。