【发布时间】:2012-11-03 05:37:08
【问题描述】:
假设我有一个相当昂贵的断言:
bool IsCompatible(Object x, Object y) {
// do expensive stuff here
}
如果我测试这个断言:
Debug.Assert(IsCompatible(x,y));
IsCompatible 会在发布版本中执行吗?
我的理解是 Debug.Assert 被标记为 [Conditional("DEBUG")],对它的调用只会在调试版本中发出。我认为这不会阻止表达式在发布模式下被评估,因为方法调用可能有副作用,只有将结果传递给 Debug.Assert 不会被发出。对吗?
我应该这样做:
#if DEBUG
Debug.Assert(IsCompatible(x,y));
#endif
为了确保我在发布模式下不支付 IsCompatible 的费用?
【问题讨论】:
标签: c# .net conditional-compilation