¿Cuál es el uso de una variable compartida en VB.NET?

¿Cuál es el uso de una variable Shared en VB.NET?

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() 

más bien que

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

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 declaraciones 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 declaraciones dentro de una clase normal, como a nivel de clase para hacer que toda la clase sea estática.

Un método “Compartido” o “estático” actúa sobre el “tipo” (es decir, la clase) en lugar de actuar sobre una instancia 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 “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, vamos a 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 como:

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

Si este método se convirtió en un método “compartido” (al agregar el calificador “Compartido” en la definición del método, 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 entonces:

 MyClass.MyMethod() 

También puede ver ejemplos de esto en el propio framework .NET. Por ejemplo, el tipo “cadena” tiene muchos métodos estáticos / compartidos. Es decir

 ' Using an instance method (ie 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!"); 

Aquí hay un buen artículo que lo explica más:

Miembros compartidos y miembros de instancias en VB.NET

Simplemente cuando quiera tener una sola instancia de variable para toda la aplicación, compartida entre los objetos de su clase. En lugar de 1 por objeto