Shared
VB.NET中变量的用途是什么?
它与static
C#和大多数其他语言相同.这意味着类中的每个对象都使用变量,属性或方法的相同副本.与方法一起使用时,因为它是静态的,所以不需要对象实例.
MyClass.DoSomething()
而不是
Dim oObject as New MyClass() oObject.DoSomething()
VB.NET中的"Shared"关键字相当于C#中的"static"关键字.
在VB.NET中,Shared关键字可以应用于类中的Dim,Event,Function,Operator,Property和Sub语句; 但是,在C#中,static
关键字既可以应用于普通类中的这些语句,也可以应用于类级别,以使整个类保持静态.
"共享"或"静态"方法作用于"类型"(即类),而不是作用于类型/类的实例.由于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!");
这是一篇很好的文章,进一步解释了它:
VB.NET中的共享成员和实例成员
只要您想为整个应用程序提供单个变量实例,就可以在类的对象之间共享.而不是每个对象1.