2009-03-05 26 views

Respuesta

23

Es lo mismo que static en C# y en la mayoría de los demás idiomas. Significa que cada objeto en la clase usa la misma copia de la variable, propiedad o método. Cuando se usa con un método, ya que es estático, no necesita una instancia de objeto.

MyClass.DoSomething() 

en lugar de

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

El autor de la pregunta específicamente dirigidos preguntó acerca de las variables compartidas, no métodos compartidos. –

+10

Mentalmente reemplaza DoSomething() con Algo para que la publicación se aplique a las variables en lugar de a los métodos. – OregonGhost

5

Simplemente cada vez que quieren tener una sola instancia de variable para toda la aplicación, compartida entre los objetos de la clase. En lugar de 1 por objeto

26

La palabra clave "Compartida" en VB.NET es el equivalente de la palabra clave "estática" en C#.

En VB.NET, la palabra clave Shared se puede aplicar a las sentencias Dim, Event, Function, Operator, Property y Sub dentro de una clase; sin embargo, en C#, la palabra clave static se puede aplicar tanto a estas instrucciones dentro de una clase normal, como a nivel de clase para hacer que toda la clase sea estática.

Un método "estático" "compartida" o actúa sobre el "tipo" (es decir, la clase) en lugar de actuar sobre un ejemplo del tipo/clase. Dado que los métodos (o variables) Shared actúan sobre el tipo en lugar de una instancia, solo puede haber una sola "copia" de la variable o método en lugar de muchas copias (una para cada instancia) en el caso de no compartido (es decir, , instancia) métodos o variables.

Por ejemplo: si tiene una clase, podemos llamarla MyClass con un único método no compartido llamado MyMethod.

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

Para llamar a ese método necesitaría una instancia de la clase para llamar al método. Algo así como:

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

Si entonces se hizo este método en un método "compartida" (añadiendo el calificativo "compartida" en la definición del método, que ya no necesita una instancia de la clase para llamar al método

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

Y luego:..

MyClass.MyMethod() 

también puede ver ejemplos de esto en el marco .NET en sí por ejemplo, el tipo "cadena" tiene muchos métodos estáticos/compartidos Es decir

// 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!"); 

He aquí un buen artículo que explica aún más:

Shared Members and Instance Members in VB.NET

+2

El equivalente aproximado de una clase estática (compartida) en VB es un módulo. – Antony

Cuestiones relacionadas