Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在VB中,静态是什么意思?_Vb.net - Fatal编程技术网

Vb.net 在VB中,静态是什么意思?

Vb.net 在VB中,静态是什么意思?,vb.net,Vb.net,在VB中,静态是什么意思 编辑-代码示例以供参考 Module Module1 Sub Main() Dim a = New Foo Dim b = New Foo Console.WriteLine(a.Boom) Console.WriteLine(a.Boom) Console.WriteLine(a.Boom) Console.WriteLine(b.Boom) End Su

在VB中,静态是什么意思

编辑-代码示例以供参考

Module Module1

    Sub Main()
        Dim a = New Foo
        Dim b = New Foo
        Console.WriteLine(a.Boom)
        Console.WriteLine(a.Boom)
        Console.WriteLine(a.Boom)
        Console.WriteLine(b.Boom)
    End Sub

End Module


Class Foo
    Function Boom() As Integer
        Static callCount As Integer = 0
        callCount += 1
        Return callCount
    End Function
End Class

这是一种具有方法本地字段的方法。基本上,该值在调用之间保持,但在类的其他部分不可访问。有关一些实现信息,请参阅

编辑:乔纳森,你说得对,这些字段不必是共享/静态的。如果函数/子函数声明为共享,则它将是一个共享/静态字段。否则,它将是一个实例字段。无论哪种方式,它都是跨调用持久的,并且是方法的本地。下面的示例(继续)清楚地显示了这两种行为:

Class Fibonacci

    Public Function FibonacciInstance() as Integer
           Static i as Integer = -1
           Static j as Integer = 1
           Dim k as Integer

           k = i + j
           i = j
           j = k

           return k
    End Function

    Public Shared Function FibonacciShared() as Integer
           Static i as Integer = -1
           Static j as Integer = 1
           Dim k as Integer

           k = i + j
           i = j
           j = k

           return k
    End Function

    Shared Sub Main()
        Dim d as Integer
        Dim a = New Fibonacci
        Dim b = New Fibonacci       
        For d = 0 to 10
            System.Console.WriteLine("a.FibonacciInstance: " & a.FibonacciInstance())
            System.Console.WriteLine("b.FibonacciInstance: " & b.FibonacciInstance())
            System.Console.WriteLine("a.FibonacciShared: " & a.FibonacciShared())
            System.Console.WriteLine("b.FibonacciShared: " & b.FibonacciShared())
        Next d
    End Sub

End Class

这是一种具有方法本地字段的方法。基本上,该值在调用之间保持,但在类的其他部分不可访问。有关一些实现信息,请参阅

编辑:乔纳森,你说得对,这些字段不必是共享/静态的。如果函数/子函数声明为共享,则它将是一个共享/静态字段。否则,它将是一个实例字段。无论哪种方式,它都是跨调用持久的,并且是方法的本地。下面的示例(继续)清楚地显示了这两种行为:

Class Fibonacci

    Public Function FibonacciInstance() as Integer
           Static i as Integer = -1
           Static j as Integer = 1
           Dim k as Integer

           k = i + j
           i = j
           j = k

           return k
    End Function

    Public Shared Function FibonacciShared() as Integer
           Static i as Integer = -1
           Static j as Integer = 1
           Dim k as Integer

           k = i + j
           i = j
           j = k

           return k
    End Function

    Shared Sub Main()
        Dim d as Integer
        Dim a = New Fibonacci
        Dim b = New Fibonacci       
        For d = 0 to 10
            System.Console.WriteLine("a.FibonacciInstance: " & a.FibonacciInstance())
            System.Console.WriteLine("b.FibonacciInstance: " & b.FibonacciInstance())
            System.Console.WriteLine("a.FibonacciShared: " & a.FibonacciShared())
            System.Console.WriteLine("b.FibonacciShared: " & b.FibonacciShared())
        Next d
    End Sub

End Class

不。我刚检查过,它的行为绝对不像一个共享字段。如果我运行编辑问题中的代码,我会得到“1,2,3,1”。不。我刚检查过,它的行为绝对不像一个共享字段。如果我在编辑的问题中运行代码,我会得到“1,2,3,1”。