2012-01-01 119 views
5

我的Class1和等級2是內部的Class1,VB.NET代碼:如何從子類中獲取父類中的值(在嵌套類中)?

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 

我想從等級2,代碼在VB.net或C#訪問varisbleX所理解的,由於。

回答

8

內部類(class2)不與外部類(class1)的任何特定實例關聯。 T訪問字段等,你將需要首先明確引用一個class1實例,可能通過構造函數傳遞它。例如,它可能是:

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

如果該課程是共享的,該怎麼辦? – ekkis 2012-07-24 20:55:41

+0

@ekkis更多的上下文要求 - 我不明白的問題 – 2012-07-24 21:05:37

+0

我已經重新制定了這裏的問題:http://stackoverflow.com/questions/11656743/accessing-shared-parent-fields-properties-in-nested-classes - 順便說一句,你在郵件中使用了什麼訣竅來獲取@ekkis?我似乎無法在我的回覆中做同樣的事情......它將它取出! – ekkis 2012-07-25 19:03:50

0

如果您只需要幾個變量,則可以在初始化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 

這樣Class2不能訪問所有Class1的變量和屬性;只有你明確地給它。通常我們不希望子類受控於父類。所以這種方法提供了分離。

相關問題