使用继承创建共享变量

时间:2015-09-18 03:15:31

标签: vb.net

我的问题与以下问题有关:

In VB.net, How can I access to a function in a class from an other function in a nested class?

通过设置变量h shared,您是否将该变量作为单个或静态变量提供给类的所有实例,从而在问题者未来的努力中产生问题的可能性?或者我对VB.net的理解有偏差吗?

如果我是对的那就意味着代码需要像这样安排:

Class N
    Dim h
    Class n
        Implements iInterface
        Sub f()
            h = 5
        End Sub
    End Class
End Class

而是创建一个用于消费代码的对象实例?

1 个答案:

答案 0 :(得分:1)

共享变量不是实例化对象的一部分。如果你写

Dim o As New N
o.h = 1

假设h已共享,您将收到警告。你必须这样称呼它。

N.h = 1

当您在类本身中有代码时,您不需要指定类名。他的代码实际上是

Class N
    Shared h = 4

    Class n
        Implements iInterface
        Sub f()
            N.h = 5
        End Sub
    End Class
End Class

也许这会帮助你理解它。这清楚地表明n的每个实例将共享相同的h变量。让我们添加一个新功能

Class N
    Shared h = 4

    Class n
        Implements iInterface
        Sub f()
            h = 5
        End Sub
        Sub ff()
            h = 12
        End Sub
        Function GetH() As Integer
            Return h
        End Sub
    End Class
End Class

Dim o1 As New n
Dim o2 As New n

o1.f()
o2.ff()

Console.WriteLine(o1.GetH()) ' This will print 12
Console.WriteLine(o2.GetH()) ' This will print 12

我认为他的问题没有足够的信息来表明共享变量是否会引起问题。