来源:网络 | 2007-3-23 | (有6126人读过)
关键字Me :
我不知道大家对“Me”关键字的使用情况,不过它确实是一个比较有用的概念,在 C++ 中它叫做“this”,其实就像我们说话时用的人称代词“你我他”之类,谁说就是谁,并不总是确指一个人的。
关键字“Me”返回对当前实体的引用。如果是在当前窗体使用“Me”,那么“Me”就是当前窗体的引用;如果是在当前类模块里使用“Me”,“Me”就是对此类产生的当前对象的引用。
“Me”有什么用呢?我用大家都比较熟悉的窗体来举例吧。不用“Me”关键字的程序如下例:
在“窗体1”中:
Option Explicit
Private Sub Form_Load()
If 出错 Then 显示错误并退出 窗体1, "未知错误"
End Sub
在“窗体2”中:
Option Explicit
Private Sub Form_Load()
If 出错 Then 显示错误并退出 窗体2, "未知错误"
End Sub
在“函数模块”中:
Option Explicit
Public Sub 显示错误并退出(当前窗体 As Form, 错误信息 As String)
MsgBox "窗体“" & 当前窗体.Name & "”出现错误:" & 错误信息
End
End Sub
而使用“Me”关键字的程序如下:
在“窗体1”中:
Option Explicit
Private Sub Form_Load()
If 出错 Then 显示错误并退出 Me, "未知错误"
End Sub
在“窗体2”中:
Option Explicit
Private Sub Form_Load()
If 出错 Then 显示错误并退出 Me, "未知错误"
End Sub
在“函数模块”中:
Option Explicit
Public Sub 显示错误并退出(当前窗体 As Form, 错误信息 As String)
MsgBox "窗体“" & 当前窗体.Name & "”出现错误:" & 错误信息
End
End Sub
程序只有很小的变化,不过这很小的变化却让我们从不同对象的不同引用之中解脱出来,不必再关心当前窗体究竟应该是“窗体1”呢,还是“窗体2”,即使以后我们因为某种需要修改了窗体名,也一样不需要修改其调用的源代码。不过在“类”里,“Me”关键字更有用,因为在类被实例化以前是不知道自己究竟叫什么的,举例来说,有一个类“狼”,我们实例化时用“Dim 麦克 As 狼”,但是在“狼”类被定义时并不知道用户会把产生的实例叫做“麦克”,这时用“Me”来引用它,一样是对“麦克”的引用。这种类对自己产生的对象的引用我目前只用在了“系统回调函数”上,比如托盘程序“Tray”,因为在以前我的心得里讲过,就不多说了,另外各位还可以参考我写的“系统栏”模块上的做法。
|