0
Public Class Class1

Private names As List(Of String)
Private _class2 As New Class2

Public Sub AddName(ByVal name As String)
    names.Add(name)
    _class2.Add()
End Sub

Public ReadOnly Property AddAge(ByVal name As String) As Class2
    Get
        _class2.index = names.IndexOf(name)
        Return _class2
    End Get
End Property

Public Sub Clear()
    names.Clear()
    _class2.Clear()
End Sub

Public Class Class2

    Private _age As List(Of Integer)
    Protected Friend index As Integer

    Public Property Age() As Integer
        Get
            Return _age(index)
        End Get
        Set(ByVal value As Integer)
            _age(index) = value
        End Set
    End Property

    Public Sub Add()
        _age.Add(0)
    End Sub

    Public Sub Clear()
        _age.Clear()
    End Sub

End Class
End Class

class2 の Sub Clear と Sub Add を非表示にして、class1 でのみ表示されるようにするにはどうすればよいですか?

Public Sub Clear()
    names.Clear()
    _class2.Clear() '<<<<<<<
End Sub

以下のように、Sub Main() に表示されないようにします。

Sub Main()
    Dim person As New Class1

    person.AddAge("kid").Clear() '<<<<<<
    person.AddAge("kid").Add() '<<<<<<

End Sub

Protected にすると、class1 からアクセスできなくなります。Protected Friend を配置しても、Sub Main() はそれらにアクセスできます。あなたの助けと時間をありがとう。

4

1 に答える 1

1

中古 -Hans Passant- コメント。

「.NET の信頼は、アセンブリの境界に従います。1 つのアセンブリで 2 つのクラスを取得すると、問題が発生した場合にお互いを見つける方法を知っている 2 人のプログラマーが存在します。必要なものを取得する唯一の方法は、これらのクラスを別のアセンブリに配置することです。クラス ライブラリ プロジェクトです。これにより、Friend を使用できます。また、その Main メソッドを作成する人は誰でも友好的である必要はありません。」

于 2013-04-09T00:40:47.000 に答える