Dot-Net
私有嵌套類
我想創建一個嵌套類,它只能對父類可見並從父類實例化。
但我也希望能夠通過父類的公共變數來使用嵌套類的實例。
我嘗試將嵌套類設為私有,或將嵌套類的建構子設為私有,但它不會編譯。
是否可以在 .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
通常 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