This,其实与ThisForm是同样的概念,后者专用于Form控件,而前者是更广泛,可用于一切对象,它包含后者。“引用”,你可以把它理解为一个实体的别名。比如,你命名某个内存变量为x,这是它的一个名字,同样也可以把这一个实体也命名为y,此时x和y虽然是两个名称,但却是同一个东西的名字,当你修改y内容的时候,事实上用x也可以访问到所有的变化,即两个名字是完全等效的(回忆一下作为数据表工作区的别名)。
在你这里的例子中,是一个控件实体,"是它的内存变量真名,在Form1控件内部,This(因为是Form,所以也有专用的名字ThisForm)就是它自己,亦即是。因为作为类代码的编写,此时还不知道将被用于生成的对象实体叫什么名字,所以必须用这么一个特殊的名字来呼叫自己,一旦它被用于生成对象实体,则真实的名字就会与它绑定起来。CommandButton就是一个抽象类,此时它被生成三个对象实体(Command1、Command2和Command3),在每个对象实体内部的方法中,各自用This来指代自己,但此时三个的This实体其实不是同一个东西,Command1中This就是,在Form1中它也可以被叫作(或)。
明白了这些概念,就可以理解函数的使用法了:在Command1.Click事件代码中,调用函数ThisForm.CmdClk(This),This是参数,亦即告诉CmdClk,在你的代码中,x就是。假定是Command2调用CmdClk(This),此时x就是。
确定参数This是什么,核心是当前是谁在发出指令,This就是自己。张三、李四都叫“我”,但“我”却是两个不同的实体,听的人不会根据“我”是同一个字就认为是同一个人,而是看谁在说“我”。就是这个道理。在VB中,也有同样的概念,那就是Me,C++之类也用This。
[
本帖最后由 TonyDeng 于 2011-10-22 14:37 编辑 ]