2012-01-01 123 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的变量和属性;只有你明确地给它。通常我们不希望子类受控于父类。所以这种方法提供了分离。

相关问题