親クラスからのみ可視化してインスタンス化できるネストされたクラスを作成したいとします。
しかし、ネストされたクラスのインスタンスを親クラスのパブリック変数で使用できるようにしたいと思います。
ネストしたクラスをプライベートにするか、ネストされたクラスのコンストラクタをprivateにしようとしましたが、コンパイルされません。
.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
ネストされたクラスについて特別なことは、それが含まれているクラスのプライベートメンバーと保護されたメンバーにアクセスできることです(ただし、そのメンバーへの参照がある場合のみ)。これはあなたが気にかけたネストされたクラスの機能ですか、何か他のことをしようとしていましたか? –
私はIntellisenseからネストされたクラスを保持しようとしていますが、親クラス以外ではインスタンス化できないという保険もあります。 – mcu
私にとっては、ネストされたプライベートクラス定義は、プライベート変数と同じように、そのクラスに対してプライベートであるという点で、保持クラスでのみ使用可能でなければなりません。しかし、保持クラスがそれをインスタンス化し、保持クラス内のpublic変数に代入する場合、インスタンスは保持クラスのフィールドとして誰にでもアクセス可能でなければなりません。それはちょうど私にとって非常に自然なオブジェクトのように思えます。しかたがない。 – mcu