如何在VB.NET中使名称引用属性而不是类?
比较以下几组VB.NET类:如何在VB.NET中使名称引用属性而不是类?,.net,vb.net,class,properties,.net,Vb.net,Class,Properties,比较以下几组VB.NET类: Public Class MyProperties Private Shared m_customer As Customer Public Shared Property Customer() As Customer ' getter and setter code End Property End Class Public Class Customer Public Field1 As String End C
Public Class MyProperties
Private Shared m_customer As Customer
Public Shared Property Customer() As Customer
' getter and setter code
End Property
End Class
Public Class Customer
Public Field1 As String
End Class
Public Class MyOtherClass
Sub Proc1
Debug.WriteLine(Customer.Field1) ' this does not compile
End Sub
End Class
-----------------------------------------
Public Class Customer
Public Field1 As String
End Class
Public Class MyOtherClass
Private Shared m_customer As Customer
Public Shared Property Customer() As Customer
' getter and setter code
End Property
Sub Proc1
Debug.WriteLine(Customer.Field1) ' this compiles
End Sub
End Class
可以做些什么来编译顶级段
你能帮忙吗 在第二组代码中,Customer指的是当前类的Customer属性(与
Me.Customer
)相同。然后,您可以通过实例访问客户属性的字段1
属性(尽管这会编译,但当您尝试访问属性Customer时,它会在运行时引发异常,因为您没有使用new
关键字设置对对象的引用)
在顶段中,当前类不包含名为Customer的属性,因此编译器将查找当前类之外的对象。然后,它将查找名为Customer
的类。在这种情况下,它不能使用Field1
属性,因为Field1
是非共享成员。如果您创建了Field
共享
这将编译
因此,要得出结论,您要么需要使属性共享,要么需要通过类的实例访问属性
要么:
Public Class Customer
Public Shared Field1 As String
End Class
Public Class MyOtherClass
Sub Proc1
Debug.Writeline(Customer.Field1)
End SUb
End Class
或:
Public Class Customer
Public Field1 As String
End Class
Public Class MyOtherClass
Sub Proc1
Dim myCust as New Customer
Debug.Writeline(myCust.Field1)
End SUb
End Class