【问题标题】:How to get a value inside parent class from child class (in nested classes)?如何从子类(在嵌套类中)获取父类中的值?
【发布时间】:2012-01-01 09:04:21
【问题描述】:

我有 Class1 和 class2 在 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

我想从 class2 访问 varisbleX,欢迎使用 VB.net 或 C# 中的代码,谢谢。

【问题讨论】:

    标签: .net vb.net nested-class


    【解决方案1】:

    内部类 (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
    

    【讨论】:

    • @ekkis 需要更多上下文 - 我不明白这个问题
    • 我在这里重新提出了问题:stackoverflow.com/questions/11656743/… - 顺便说一句,您使用什么技巧来获取消息中的@ekkis?在我给你的回复中我似乎不能这样做......它把它拿出来!
    • @ekkis 它会为您取出它(作为第一个词等),因为它会自动回复我。这是我的帖子等。
    • 啊。我懂了。所以我无法回复其他人在此处对您的回复...这避免了多方对话
    • @ekkis 是的,你可以,而且在这种情况下,它会删除 @foo。它只是这样做是因为您正在回复帖子所有者
    【解决方案2】:

    如果您只需要几个变量,您可以在初始化 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 的所有变量和属性;只有你明确给出的。通常我们不希望子类控制父类。所以这个方法提供了这种分离。

    【讨论】:

      猜你喜欢
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多