我已经声明了OBJECT类型的“变量”。我还声明了一个名为TEST的类,它具有属性“ name”。我的理解是,在语句 variable = New test()中,编译器正在创建类TEST的新实例,并将该新创建实例的引用/内存地址存储在“ variable”中。这个想法是,对象类型的变量应该能够存储任何类型的数据或其引用。通过使用成员访问器运算符的逻辑,我应该能够使用“变量”访问属性“名称”。但是我做不到。有人可以解释当实例的引用存储在对象类型变量中时为什么以及如何访问该属性吗?
Module Program
Sub Main()
Dim variable As Object
variable = New test()
Console.WriteLine("Value: {0} Type: {1}", variable, variable.GetType())
'Output is Type: Object_Data_Type.test --> Works
'However we cannot access the property name of the class TEST through "varibale"
Console.ReadLine()
End Sub
End Module
Public Class test
Public Property name As String
End Class
答案 0 :(得分:1)
因为对象没有name
属性,并且(在外部)变量看起来像对象。如果您希望它看起来像Test,则必须将其强制转换为
Console.WriteLine("Value: {0} Type: {1}", DirectCast(variable, Test).name, variable.GetType())