上面代码的注释说,控件会在加入控件树之前被初始化,因此我们要保证Page不为Null。
我认为:在根据声明语法生成控件树的过程中,执行到此步骤时,控件树已经生成了一部分,即Page在此时不可能为Null,因此不用判断Null。可是跟踪发现Page确实是Null,原因可能是,控件树已经部分生成,Page已经生成。但在此时子控件是不能访问Page的,所以才会是Null。
下面是编译源:
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126521.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126529.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126522.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126521.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126529.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126522.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126521.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126529.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126522.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126521.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/11265226.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126526.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/11265234.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126529.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126522.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126522.gif)
![](http://www.souzz.net/ddimg/uploadimg/20060810/1126522.gif)
可以看到在执行Init前,会编译运行上面自动生成的编译源,这样以来第一个问题就彻底清楚了,也证明我上面的判断是正确的。