读别人的代码,我在一个类的无参公共构造函数里加了个MessageBox,但单步跟踪到这个构造函数的时候,并未执行MessageBox这句话就跳过去了,这让我好生奇怪:它有什么理由不执行呢?研究半天后恍然大悟:这是一个类库项目,而修改后我并未重新生成此类库——脑子暂时短路的结果。
但在意识到脑子短路之前,我却考虑了很多:此类继承自另一个类,难道是继承上出了问题?不厌其烦的我甚至启动Snippet Compiler,亲手写了个简单的父类、子类,包括构造函数的无参、有参、不写三种情况,把构造函数在继承中的执行方式重新复习了一遍。结果当然是一切均按预想的流程工作:构造子类对象时首先执行父类构造函数,然后再执行子类构造函数;如果子类没有构造函数,表面上看只执行了父类的构造函数,但据说实际上还执行了一个运行时提供的无参公共构造函数(书上这么说的,但跟踪不到,反正啥也没干)。
在脑子恢复正常之后,我意识到应该把VS.Net中①生成解决方案(Ctrl+Shift+F5)、②重新生成解决方案、③生成项目、④重新生成项目、⑤启动(F5)、⑥开始执行不调试(Ctrl+F5)、⑦逐语句(F11)、⑧逐过程(F10) 这些概念重新明确一下。前四个是跟目标程序的生成相关,后四个跟程序执行、调试相关。查MSDN:
①生成解决方案(Ctrl+Shift+