2012-01-01 36 views
5

Tôi có Class1 và class2 mà là bên trong class1, mã VB.NET:Làm thế nào để có được một giá trị bên trong lớp cha mẹ từ lớp con (trong các lớp lồng nhau)?

Public Class class1 
    Public varisbleX As Integer = 1 
    Public Class class2 
     Public Sub New() 
      'Here GET the value of VariableX 
     End Sub 
    End Class 

    Public Sub New() 
     Dim cls2 As New class2 
    End Sub 
End Class 

tôi muốn truy cập varisbleX từ class2, mã trong VB.net hoặc C# được đánh giá cao, Cảm ơn bạn.

Trả lời

8

Lớp bên trong (class2) không được liên kết với bất kỳ trường hợp cụ thể nào của lớp bên ngoài (class1). T truy cập các lĩnh vực vv, trước tiên bạn sẽ cần phải có một tham chiếu rõ ràng đến một thể hiện class1, có lẽ là chuyển nó qua thông qua constructor. Ví dụ: có thể là:

Public Class class1 
    Public varisbleX As Integer = 1 
    Public Class class2 
     Public Property Parent As class1 

     Public Sub New(oParent As class1) 
      Me.Parent = oParent 
      Console.WriteLine(oParent.varisbleX) 
     End Sub 
    End Class 

    Public Sub New() 
     Dim cls2 As New class2(Me) 
    End Sub 
End Class 
+0

nếu lớp học được chia sẻ thì sao? – ekkis

+0

@ekkis ngữ cảnh cần thiết hơn - Tôi không hiểu câu hỏi –

+0

Tôi đã cải cách câu hỏi ở đây: http://stackoverflow.com/questions/11656743/accessing-shared-parent-fields-properties-in-nested-classes - nhân tiện, bạn đã sử dụng mẹo nào để lấy @ekkis trong tin nhắn? Tôi dường như không thể làm như vậy trong câu trả lời của tôi cho bạn ... nó lấy nó ra! – ekkis

0

Nếu bạn chỉ cần một vài biến, bạn có thể chuyển (các) biến làm tham số khi khởi tạo Class2.

Public Class Class1 

    Public VariableX As Integer = 1 

    Public Class Class2 
     Public Sub New(ByVal VariableX As Integer) 
      'Here GET the value of VariableX 
      Debug.Print(VariableX) 
     End Sub 
    End Class 

    Public Sub New() 
     Dim cls2 As New Class2(VariableX) 
    End Sub 

End Class 

Cách này Class2 không có quyền truy cập vào tất cả các biến và thuộc tính của Class1; chỉ những gì bạn cho nó một cách rõ ràng. Thông thường chúng ta không muốn lớp con kiểm soát lớp cha. Vì vậy, phương pháp này cung cấp sự tách biệt đó.

Các vấn đề liên quan