gpt4 book ai didi

vb.net - 在另一个类中声明一个类的目的是什么?

转载 作者:行者123 更新时间:2023-12-04 22:54:48 27 4
gpt4 key购买 nike

我来自 VBA 世界,在那里将代码分解为类、命名空间和模块的选项是有限的。现在我刚刚进入一个选择很多的世界,我感到迷茫。

我想知道在另一个类中声明一个类的目的是什么? (见下面的例子)

Class FirstClass
Public OnePropertyInside As String
Class SecondClass
Public AnotherProperty As String
End Class
End Class

如果我创建 FirstClass 的新实例(比如说 myFirstClass ), SecondClass没有实例化。
更奇怪(至少对我而言)是智能感知为我提供了 myFirstClass.SecondClass .显然,因为该类没有被实例化,所以我不能访问它的任何成员。

那么,只有在 SecondClass 时才有用吗?包含 shared成员(member)?
为了尝试回答这个问题,我在 SecondClass 中添加了一个共享成员。 :
Class FirstClass
Public OnePropertyInside As String
Class SecondClass
Public AnotherProperty As String
Public Shared SharedProperty As String
End Class
End Class

我进行了一些测试,这些测试带来了次要问题(请参阅代码中的注释)
Sub Main()       

Dim myFirstClass As New FirstClass
'Works as expected
Console.WriteLine(myFirstClass.OneProperty)

'What is the difference between the two lines below?
Console.WriteLine(myFirstClass.SecondClass.SharedProperty)
Console.WriteLine(FirstClass.SecondClass.SharedProperty)

'This line cannot be compiled, this demonstrates SecondClass is not instantiated when FirstClass is.
Console.WriteLine(myFirstClass.SecondClass.AnotherProperty)

Dim mySecondClass As New FirstClass.SecondClass
'Works as expected, but I feel this hierarchy should better be dealt with through a namespace statement?
Console.WriteLine(mySecondClass.AnotherProperty)

End Sub

最佳答案

你可以把它想象成最里面的类是一个辅助类。它甚至可能根本不需要使用。将内部类(或简单的嵌套类)嵌套在外部类中可以让您访问外部类的所有成员。您甚至可以访问该初始外部类中的私有(private)成员。

编辑:为了澄清,我的意思是说内部可以访问外部的私有(private)成员,而不是相反。

关于vb.net - 在另一个类中声明一个类的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54576389/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com