gpt4 book ai didi

c# - Debug.Assert 是否在 Release模式下生成 IL?

转载 作者:太空狗 更新时间:2023-10-29 18:15:12 27 4
gpt4 key购买 nike

当源代码中存在 Debug.Assert() 方法调用并且我在 Release模式下编译时,编译器是否为 Debug.Assert() 生成 IL,甚至虽然它没有被调用?

我们的一位开发人员最近添加了一个 Assert,用于显示有关我们内部安全的信息。有人可以查看 Release模式 IL 并找出断言的文本吗?

最佳答案

不,Debug 类的成员(具有 ConditionalAttribute 属性)不发射 IL。有 no explicit mention on MSDN ,但是以下两个引号很好地暗示了这种行为,因此可以补充 Roy 的回答:

If you use methods in the Debug class to print debugging information and check your logic with assertions, you can make your code more robust without affecting the performance and code size of your shipping product.

因此,没有大小差异意味着没有任何输出,并且

The ConditionalAttribute attribute is applied to the methods of Debug. Compilers that support ConditionalAttribute ignore calls to these methods unless "DEBUG" is defined as a conditional compilation symbol. Refer to a compiler's documentation to determine whether ConditionalAttribute is supported and the syntax for defining a conditional compilation symbol.

这意味着,在编译器级别,甚至不会考虑这些调用(当未定义 DEBUG 时。)

关于c# - Debug.Assert 是否在 Release模式下生成 IL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9996102/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com