我来自VBA世界,将代码细分为类,名称空间和模块的选项是有限的.现在我刚刚进入了一个选项很多的世界,我感到迷茫.
我想知道在另一个类中声明一个类的目的是什么?(见下面的例子)
Class FirstClass
Public OnePropertyInside As String
Class SecondClass
Public AnotherProperty As String
End Class
End Class
Run Code Online (Sandbox Code Playgroud)
如果我创建FirstClass(例如myFirstClass)的新实例,SecondClass则不实例化.更为古怪(至少对我来说),是知识分子为我提供的myFirstClass.SecondClass.显然,因为类没有实例化,所以我无法访问它的任何成员.
那么,只有SecondClass包含shared成员时才有用吗?为了尝试回答这个问题,我在其中添加了一个共享成员SecondClass:
Class FirstClass
Public OnePropertyInside As String
Class SecondClass
Public AnotherProperty As String
Public Shared SharedProperty As String
End Class
End Class
Run Code Online (Sandbox Code Playgroud)
我运行了一些带来次要问题的测试(参见代码中的注释)
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 …Run Code Online (Sandbox Code Playgroud) 客户端具有使用静态类型声明的变量 - 类似于以下测试(在VB中编译):
Dim test As System.IO.File
Run Code Online (Sandbox Code Playgroud)
这样做的目的是什么?在我的客户端代码中,此变量未在任何地方引用,因此我无法遵循任何使用模式.我原以为VB会对这个声明产生问题(就像C#那样),但是因为它没有我认为有一些深奥的VB-ish目的呢?