Buscar..


Sintaxis

  • Contador público como entero
  • Contador privado como entero
  • Contador tenue como entero

Declarar y asignar una variable usando un tipo primitivo

Las variables en Visual Basic se declaran usando la palabra clave Dim . Por ejemplo, esto declara una nueva variable llamada counter con el tipo de datos Integer :

Dim counter As Integer

Una declaración de variable también puede incluir un modificador de acceso , como Public , Protected , Friend o Private . Esto funciona en conjunto con el alcance de la variable para determinar su accesibilidad.

Modificador de acceso Sentido
Público Todos los tipos que puedan acceder al tipo envolvente.
Protegido Solo la clase envolvente y las que la heredan.
Amigo Todos los tipos en el mismo ensamblaje que pueden acceder al tipo envolvente
Amigo protegido La clase envolvente y sus herederos, o los tipos en el mismo ensamblaje que pueden acceder a la clase envolvente
Privado Solo el tipo que lo encierra.
Estático Solo en variables locales y solo inicializa una vez.

Como una abreviatura, la palabra clave Dim se puede reemplazar con el modificador de acceso en la declaración de la variable:

Public TotalItems As Integer
Private counter As Integer

Los tipos de datos admitidos se describen en la siguiente tabla:

Tipo Alias Asignación de memoria Ejemplo
SByte N / A 1 byte Dim example As SByte = 10
Int16 Corto 2 bytes Dim example As Short = 10
Int32 Entero 4 bytes Dim example As Integer = 10
Int64 Largo 8 bytes Dim example As Long = 10
Soltero N / A 4 bytes Dim example As Single = 10.95
Doble N / A 8 bytes Dim example As Double = 10.95
Decimal N / A 16 bytes Dim example As Decimal = 10.95
Booleano N / A Dictado por plataforma implementadora. Dim example As Boolean = True
Carbonizarse N / A 2 bytes Dim example As Char = "A"C
Cuerda N / A fórmula fuente Dim example As String = "Stack Overflow"
Fecha y hora Fecha 8 bytes Dim example As Date = Date.Now
Byte N / A 1 byte Dim example As Byte = 10
UInt16 UShort 2 bytes Dim example As UShort = 10
UInt32 UInteger 4 bytes Dim example As UInteger = 10
UInt64 De largo 8 bytes Dim example As ULong = 10
Objeto N / A Arquitectura de 4 bytes y 32 bits, arquitectura de 8 bytes y 64 bits. Dim example As Object = Nothing

También existen identificadores de datos y caracteres de tipo literal que se pueden usar en reemplazo del tipo de texto o para forzar el tipo de literal:

Tipo (o alias) Tipo de identificador de caracteres Personaje de tipo literal
Corto N / A example = 10S
Entero Dim example% example = 10% o example = 10I
Largo Dim example& example = 10& o example = 10L
Soltero Dim example! example = 10! o example = 10F
Doble Dim example# example = 10# o example = 10R
Decimal Dim example@ example = 10@ o example = 10D
Carbonizarse N / A example = "A"C
Cuerda Dim example$ N / A
UShort N / A example = 10US
UInteger N / A example = 10UI
De largo N / A example = 10UL

Los sufijos integrales también se pueden usar con prefijos hexadecimales (& H) u octales (& O):
example = &H8000S o example = &O77&

Los objetos de fecha (hora) también se pueden definir utilizando la sintaxis literal:
Dim example As Date = #7/26/2016 12:8 PM#

Una vez que se declara una variable, existirá dentro del Ámbito del tipo que contiene, Sub o Function declarada, como un ejemplo:

Public Function IncrementCounter() As Integer
    Dim counter As Integer = 0
    counter += 1

    Return counter
End Function

La variable de contador solo existirá hasta la End Function y luego quedará fuera de alcance. Si esta variable de contador es necesaria fuera de la función, tendrá que definirla a nivel de clase / estructura o módulo.

Public Class ExampleClass

    Private _counter As Integer
   
    Public Function IncrementCounter() As Integer
       _counter += 1
       Return _counter
    End Function

End Class

Alternativamente, puede usar el modificador Static (que no debe confundirse con Shared ) para permitir que una variable local retenga su valor entre las llamadas de su método de cierre:

Function IncrementCounter() As Integer
    Static counter As Integer = 0
    counter += 1

    Return counter
End Function

Niveles de declaración - Variables locales y miembros.

Variables locales : aquellas declaradas dentro de un procedimiento (subrutina o función) de una clase (u otra estructura). En este ejemplo, exampleLocalVariable es una variable local declarada dentro de ExampleFunction() :

Public Class ExampleClass1

    Public Function ExampleFunction() As Integer
        Dim exampleLocalVariable As Integer = 3
        Return exampleLocalVariable
    End Function

End Class

La palabra clave Static permite que una variable local se retenga y mantenga su valor después de la terminación (donde generalmente, las variables locales dejan de existir cuando finaliza el procedimiento de contención).

En este ejemplo, la consola es 024 . En cada llamada a ExampleSub() desde Main() la variable estática retiene el valor que tenía al final de la llamada anterior:

Module Module1

    Sub Main()
        ExampleSub()
        ExampleSub()
        ExampleSub()
    End Sub

    Public Sub ExampleSub()
        Static exampleStaticLocalVariable As Integer = 0
        Console.Write(exampleStaticLocalVariable.ToString)
        exampleStaticLocalVariable += 2
    End Sub

End Module

Variables del miembro : declaradas fuera de cualquier procedimiento, a nivel de clase (u otra estructura). Pueden ser variables de instancia , en las que cada instancia de la clase que contiene tiene su propia copia distinta de esa variable, o variables Shared , que existen como una sola variable asociada con la clase en sí, independientemente de cualquier instancia.

Aquí, ExampleClass2 contiene dos variables miembro. Cada instancia de la ExampleClass2 tiene un individuo ExampleInstanceVariable que se puede acceder a través de la referencia de clase. La variable compartida ExampleSharedVariable sin embargo se accede utilizando el nombre de clase:

Module Module1

    Sub Main()

        Dim instance1 As ExampleClass4 = New ExampleClass4
        instance1.ExampleInstanceVariable = "Foo"

        Dim instance2 As ExampleClass4 = New ExampleClass4
        instance2.ExampleInstanceVariable = "Bar"

        Console.WriteLine(instance1.ExampleInstanceVariable)
        Console.WriteLine(instance2.ExampleInstanceVariable)
        Console.WriteLine(ExampleClass4.ExampleSharedVariable)

    End Sub

    Public Class ExampleClass4

        Public ExampleInstanceVariable As String
        Public Shared ExampleSharedVariable As String = "FizzBuzz"

    End Class

End Module

Ejemplo de modificadores de acceso

En el siguiente ejemplo, considere que tiene una solución que aloja dos proyectos: ConsoleApplication1 y SampleClassLibrary . El primer proyecto tendrá las clases SampleClass1 y SampleClass2 . El segundo tendrá SampleClass3 y SampleClass4 . En otras palabras, tenemos dos asambleas con dos clases cada una. ConsoleApplication1 tiene una referencia a SampleClassLibrary .

Vea cómo SampleClass1.MethodA interactúa con otras clases y métodos.

SampleClass1.vb:

Imports SampleClassLibrary

Public Class SampleClass1
    Public Sub MethodA()
        'MethodA can call any of the following methods because
        'they all are in the same scope.
        MethodB()
        MethodC()
        MethodD()
        MethodE()

        'Sample2 is defined as friend. It is accessible within
        'the type itself and all namespaces and code within the same assembly.
        Dim class2 As New SampleClass2() 
        class2.MethodA()
        'class2.MethodB() 'SampleClass2.MethodB is not accessible because
                          'this method is private. SampleClass2.MethodB
                          'can only be called from SampleClass2.MethodA,
                          'SampleClass2.MethodC, SampleClass2.MethodD
                          'and SampleClass2.MethodE
        class2.MethodC()
        'class2.MethodD() 'SampleClass2.MethodD is not accessible because
                          'this method is protected. SampleClass2.MethodD
                          'can only be called from any class that inherits
                          'SampleClass2, SampleClass2.MethodA, SampleClass2.MethodC,
                          'SampleClass2.MethodD and SampleClass2.MethodE
        class2.MethodE()

        Dim class3 As New SampleClass3() 'SampleClass3 resides in other
                                         'assembly and is defined as public.
                                         'It is accessible anywhere.
        class3.MethodA()
        'class3.MethodB() 'SampleClass3.MethodB is not accessible because
                          'this method is private. SampleClass3.MethodB can
                          'only be called from SampleClass3.MethodA,
                          'SampleClass3.MethodC, SampleClass3.MethodD
                          'and SampleClass3.MethodE

        'class3.MethodC() 'SampleClass3.MethodC is not accessible because
                          'this method is friend and resides in another assembly.
                          'SampleClass3.MethodC can only be called anywhere from the
                          'same assembly, SampleClass3.MethodA, SampleClass3.MethodB,
                          'SampleClass3.MethodD and SampleClass3.MethodE

        'class4.MethodD() 'SampleClass3.MethodE is not accessible because
                          'this method is protected friend. SampleClass3.MethodD
                          'can only be called from any class that resides inside
                          'the same assembly and inherits SampleClass3,
                          'SampleClass3.MethodA, SampleClass3.MethodB,
                          'SampleClass3.MethodC and SampleClass3.MethodD      

        'Dim class4 As New SampleClass4() 'SampleClass4 is not accessible because
                                          'it is defined as friend and resides in
                                          'other assembly.
    End Sub

    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class

SampleClass2.vb:

Friend Class SampleClass2
    Public Sub MethodA()
        'Doing MethodA stuff...
    End Sub

    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class

SampleClass3.vb:

Public Class SampleClass3
    Public Sub MethodA()
        'Doing MethodA stuff...
    End Sub
    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class

SampleClass4.vb:

Friend Class SampleClass4
    Public Sub MethodA()
        'Doing MethodA stuff...
    End Sub
    Private Sub MethodB()
        'Doing MethodB stuff...
    End Sub

    Friend Sub MethodC()
        'Doing MethodC stuff...
    End Sub

    Protected Sub MethodD()
        'Doing MethodD stuff...
    End Sub

    Protected Friend Sub MethodE()
        'Doing MethodE stuff...
    End Sub
End Class


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow