mcu*_*mcu 7 .net vb.net oop nested class
我想创建一个只能从父类可见并实例化的嵌套类.
但我也希望能够通过父类的公共变量使用嵌套类的实例.
我尝试将嵌套类设为私有,或者使嵌套类的构造函数为私有,但它不会编译.
是否可以在.NET中执行此操作?
这编译和工作,但嵌套类可以被任何人使用:
Public Class OuterClass
Public X As Integer = 123
Public NestedClassInstance As New NestedClass(Me)
Public Class NestedClass
Private Parent As OuterClass
Public Sub New(ByVal _Parent As OuterClass)
Parent = _Parent
End Sub
Public Sub GetParentX()
Debug.WriteLine("X = " & Parent.X.ToString)
End Sub
End Class
End Class
Sub Main()
Dim OuterClassInstance As New OuterClass
OuterClassInstance.NestedClassInstance.GetParentX()
End Sub
Run Code Online (Sandbox Code Playgroud)
通常,Private嵌套类实现接口或继承另一个类,并公开接口/基类.当您想要将实现隐藏到父类时,这非常有用.像这样的东西:
Module EntryPoint
Sub Main()
Dim OuterClassInstance As New OuterClass
OuterClassInstance.NestedClassInstance.GetParentX()
End Sub
End Module
Public Class OuterClass
Public X As Integer = 123
Public NestedClassInstance As ISomeImplementation = New NestedClass(Me)
Private Class NestedClass
Implements ISomeImplementation
Private Parent As OuterClass
Public Sub New(ByVal _Parent As OuterClass)
Parent = _Parent
End Sub
Public Sub GetParentX() Implements ISomeImplementation.GetParentX
Debug.WriteLine("X = " & Parent.X.ToString)
End Sub
End Class
End Class
Public Interface ISomeImplementation
Sub GetParentX()
End Interface
Run Code Online (Sandbox Code Playgroud)