使用普通赋值语句将对象分配给对象变量。 可以分配对象表达式或 Nothing 关键字,如以下示例所示。
Dim thisObject As Object
' The following statement assigns an object reference.
thisObject = Form1
' The following statement discontinues association with any object.
thisObject = Nothing
Nothing
表示当前没有分配给变量的对象。
初始化
代码开始运行时,对象变量将初始化为 Nothing
。 其声明中包含初始化的变量将重新初始化为在执行声明语句时指定的值。
可以使用 New 关键字在声明中包括初始化。 以下声明语句声明对象变量 testUri
并 ver
向其分配特定对象。 每个函数都使用相应类的重载构造函数之一来初始化对象。
Dim testUri As New System.Uri("https://www.microsoft.com")
Dim ver As New System.Version(6, 1, 0)
解除关联
将对象变量设置为 Nothing
将终止该变量与任何特定对象的关联。 这可以防止通过更改变量意外更改对象。 它还允许你测试对象变量是否指向有效对象,如以下示例所示。
If otherObject IsNot Nothing Then
' otherObject refers to a valid object, so your code can use it.
End If
如果变量引用的对象在另一个应用程序中,则此测试无法确定该应用程序是否已终止或只是使对象失效。
一个值为 Nothing
的对象变量也称为 null 引用。
当前实例
对象的 当前实例 是当前正在执行代码的实例。 由于所有代码都在过程内执行,因此当前实例是调用该过程的实例。
该 Me
关键字充当引用当前实例的对象变量。 如果某个过程未 共享,则可以使用 Me
关键字获取指向当前实例的指针。 共享过程不能与类的特定实例相关联。
使用 Me
对将当前实例传递到另一个模块中的过程特别有用。 例如,假设你有一些 XML 文档,并希望向所有这些文档添加一些标准文本。 下面的示例定义了一个执行此作的过程。
Sub addStandardText(XmlDoc As System.Xml.XmlDocument)
XmlDoc.CreateTextNode("This text goes into every XML document.")
End Sub
然后,每个 XML 文档对象都可以调用该过程,并将其当前实例作为参数传递。 下面的示例演示这一操作。
addStandardText(Me)