同样的代码,在编译成Debug版和Resease版的行为会有不同。
程序代码如下





















这段代码的作用是每隔一秒在屏幕上输出两个字符串。由于Timer是局部变量,理论上是要在主函数结束后才释放的。Debug版的程序的行为确实是这样,屏幕上会不断输出两个字符串。可是Release版的程序,会提前释放两个timer对象,屏幕上只会输出一次两个字符串。
虽然Release版的程序为了优化才有这样的问题,不过由于两种编译模式所产生程序行为的差异,还是对程序调试造成了很多麻烦,也会买下在开发时埋下未知Bug的隐患。大家在编码时应注意同类问题。
注:如果在Console.ReadLine()语句后再加一句timer.Dispose()的话,那么timer对象就不会被释放。而且,这段程序里只有一个Timer类型的对象的话,那么Timer对象也不会被释放。