Debug 断言是通过指定一个测试的条件,在Debug 类中作为Assert方法的参数,如果测试条件满足,断言为True,正常进行,如果测试条件断言为False,则断定程序失败,并有定义的提示信息。
Trace 跟踪是.net提供的另一个与Debug功呢类似的类,使用方法基本一致。
Debug 与Trace的区别在于:Debug类的断言代码不会编译到Release版本中,而Trace类的断言代码会编译到Release版本中。因此如果在release版本中也包含断言的话,则最好使用Trace类的Assert方法。当然Trace 的使用无疑会增加Release版本的程序大小,降低程序的执行效率。
C++ 不支持Debug,也就只能使用Trace了。
断言的“陷阱”:
//在Assert中进行逻辑运算
Debug.Assert(fun(i)!=0);
Debug版本中如果断言失败会提示信息,但是由于在Release版本中,断言将被去掉,那么程序依赖断言中调用fun(i)的话,就会出现错误。
最好是不在断言中直接调用任何方法,而是使用临时变量。
//在Assert外进行逻辑运算
temp=fun(i);
Debug.Assert(temp!=0);