我的问题与以下问题有关:
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
而是创建一个用于消费代码的对象实例?
答案 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
我认为他的问题没有足够的信息来表明共享变量是否会引起问题。