VB.NET中的Shared
变量有什么用?
在VB.NET中,共享变量有什么用?
原标题:
最佳回答
它与C#和大多数其他语言中的static
相同。这意味着类中的每个对象都使用变量、属性或方法的相同副本。当与方法一起使用时,它是静态的,您不需要一个对象实例。
MyClass.DoSomething()
而不是 (ér bù shì)
Dim oObject as New MyClass()
oObject.DoSomething()
问题回答
在VB.NET中,“Shared”关键字相当于C#中的“static”关键字。
在VB.NET中,可以将Shared关键字应用于类中的Dim、Event、Function、Operator、Property和Sub语句;然而,在C#中,static关键字不仅可以应用于普通类中的这些语句,还可以在类级别上将整个类静态化。
一种“共享”或“静态”方法作用于“类型”(即类),而不是作用于类型/类的一个实例。由于共享
方法(或变量)作用于类型而不是实例,因此与非共享(即实例)方法或变量相比,变量或方法只能有一个“副本”,而非许多副本(每个实例一个)。
举个例子:如果你有一个类,我们称之为MyClass,其中有一个名为MyMethod的单一非共享方法。
Public Class MyClass
Public Sub MyMethod()
Do something in the method
End Sub
End Class
为了调用那个方法,你需要一个类的实例才能调用这个方法。像这样:
Dim myvar As MyClass = New MyClass()
myvar.MyMethod()
如果将此方法转换为“共享”方法(通过在方法定义中添加“Shared”限定符),则不再需要使用类的实例来调用该方法。
Public Class MyClass
Public Shared Sub MyMethod()
Do something in the method
End Sub
End Class
然后:
MyClass.MyMethod()
You can also see examples of this in the .NET framework itself. For example, the "string" type has many static/shared methods. I.e.
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中的共享成员和实例成员
只需在整个应用程序中想要具有变量的单个实例,共享于您的类的对象,而不是每个对象一个实例。
相关问题
热门标签
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding