Visual Basic .NET Language
Declarando variables
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 | 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