【发布时间】:2012-01-04 17:51:25
【问题描述】:
考虑下面的代码:
#if DEBUG
if (Systems.Contains(system))
throw new InvalidOperationException("System already registered");
#endif
Debug.Assert(!Systems.Contains(system), "System already registered");
以前我用的是前者,后来我发现了Debug.Assert。
我为什么不总是更喜欢Debug.Assert,有什么原因吗?
- 仅存在于调试代码中(属性为
[Conditional("DEBUG")])。 - 在我看来,这更符合我的意图(代码完整性检查,而不是引发稍后处理的异常)。
- 编写的代码更少。
【问题讨论】:
-
Debug.Assert 每次都为我赢得胜利
-
老实说,我宁愿在 99% 的时间里也投入发布模式,所以很少使用任何一种
-
@jk.:是的。在这种情况下,它是针对游戏的,因此如果可能,最好避免进行此类检查,但可以在调试时尽早发现错误。
标签: c# debugging conditional-compilation