在VB.NET中使用共享变量有什么用?

时间:2009-03-05 08:41:24

标签: vb.net

VB.NET中Shared变量有什么用?

3 个答案:

答案 0 :(得分:29)

与C#和大多数其他语言中的static相同。这意味着类中的每个对象都使用变量,属性或方法的相同副本。与方法一起使用时,因为它是静态的,所以不需要对象实例。

MyClass.DoSomething()

而不是

Dim oObject as New MyClass()
oObject.DoSomething()

答案 1 :(得分:29)

VB.NET中的“Shared”关键字相当于C#中的“static”关键字。

在VB.NET中,Shared关键字可以应用于类中的Dim,Event,Function,Operator,Property和Sub语句;但是,在C#中,static关键字既可以应用于普通类中的这些语句,也可以应用于类级别,以使整个类保持静态。

“共享”或“静态”方法作用于“类型”(即类),而不是作用于类型/类的实例。由于Shared方法(或变量)作用于类型而不是实例,因此只有一个“副本”的变量或方法,而不是许多副本(每个实例一个),非-shared(即实例)方法或变量。

例如:如果你有一个类,我们用一个叫做MyMethod的非共享方法称它为MyClass。

Public Class MyClass
    Public Sub MyMethod()
        ' Do something in the method
    End Sub
End Class

为了调用该方法,您需要该类的实例才能调用该方法。类似的东西:

Dim myvar As MyClass = New MyClass()
myvar.MyMethod()

如果此方法随后变为“共享”方法(通过在方法定义中添加“共享”限定符,则不再需要该类的实例来调用该方法。

Public Class MyClass
    Public Shared Sub MyMethod()
        ' Do something in the method
    End Sub
End Class

然后:

MyClass.MyMethod()

您还可以在.NET框架中看到此示例。例如,“string”类型具有许多静态/共享方法。即。

' Using an instance method (i.e. Non-shared) of the string type/class.
Dim s As String = "hello"
s.Replace("h", "j")

' Using a static/shared method of the string type/class.
s = String.Concat(s, " there!");

这是一篇很好的文章,可以进一步解释:

Shared Members and Instance Members in VB.NET

答案 2 :(得分:5)

只要您想为整个应用程序提供单个变量实例,就可以在类的对象之间共享。而不是每个对象1个。