2013-04-08 64 views
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,所以他們只會在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 

如果我把保護,我class1不能訪問它。如果我把受保護的朋友,Sub Main()仍然可以訪問它們。感謝您的幫助和時間。

+0

.NET中的信任遵循程序集邊界。如果你在一個程序集中得到兩個類,那麼有兩個程序員知道如何在發生問題時找到彼此。獲得你想要的東西的唯一方法就是把這些類放在一個單獨的類庫項目中。然後讓你使用Friend。而且任何人寫道,Main方法不一定非常友好。 – 2013-04-09 00:07:02

+0

謝謝,它工作。 – user2150033 2013-04-09 00:39:09

回答

1

二手-Hans Passant-評論。

「.NET中的信任遵循程序集的邊界,如果你在一個程序集中得到兩個類,那麼有兩個程序員知道如何在發生問題時找到彼此,唯一的方法就是把這些在一個單獨的類庫項目中創建類,然後讓你使用Friend,並且任何人寫道Main方法不需要友好。