1、变量本身不包含任何值。
举个例子:
建立一个缺省的VB.net窗体程序,在Form_Load中写下
Dim F1 as Form1
这并不表示F1就是一个实实在在的Form1了。不信的话你再写下
F1.Text = "Hello!"
运行一下看看,出错了不是?因为F1本身不包含任何值。那么F1到底是什么呢?
2、变量本身是引用。
引用的意思就是说它必须指向一个实实在在的东西。这个实实在在的东西是什么呢?是对象。现在在定义后面加上:
F1 = Me
这样你运行一下。窗体的标题就变成"Hello!"了。
F1 = Me表示F1这个变量指向了Me。当一个变量指向一个可用的对象之后,我们才能用它。那么可用的对象是怎么来的呢?一般是从构造函数中来的。
我们接下来再加上:
Dim F2 as Form1
F2 = F1
F2.Text = "ByeBye!"
运行一下,窗体的标题变成了“Byebye!”。
这里F2也是一个变量,也是一个引用,但是F2=F1并不表示F2是F1的一个拷贝,也不表示F2指向F1本身,而是表示F2指向F1所指向的对象。没错,F1,F2指向同一个对象。
总之,变量要指向对象。在面向对象语言中,“赋值”实际上就是“将变量指向对象”。如果你的程序中出现“未将对象引用设置到对象的实例”的话,那肯定是变量没有指向有效的对象。
那么在F2 = F1执行之前,F2是什么呢?在VB.net中,如果一个变量没有指向任何有效的对象,那么它就指向nothing。
to be continued...