繁体   English   中英

如何使用 Object 类型变量访问 class 的属性?

[英]How to access properties of a class using Object type variable?

我已经声明了一个 OBJECT 类型的“变量”。 我还声明了一个名为 TEST 的 class ,它有一个属性“name”。 我的理解是,在语句variable = New test()中,编译器正在创建 class TEST 的新实例,并将该新创建实例的引用/内存地址存储在“变量”中。 这个想法是 object 类型的变量应该能够存储任何类型的数据或其引用。 通过使用成员访问器运算符的逻辑,我应该能够使用“变量”访问属性“名称”。 但我做不到。 当对实例的引用存储在 object 类型变量中时,有人可以解释为什么以及如何访问该属性吗?

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

因为 Object 没有name属性,并且(在外部)您的变量看起来像 Object。 如果您希望它看起来像 Test ,则必须强制转换它:

Console.WriteLine("Value: {0}   Type: {1}", DirectCast(variable, Test).name, variable.GetType())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM