Instrucciones en Visual Basic
Una instrucción en Visual Basic es una instrucción completa. Puede contener palabras clave, operadores, variables, constantes y expresiones. Cada instrucción pertenece a una de las categorías siguientes:
Instrucciones de declaración, que nombren una variable, constante o procedimiento, y también pueden especificar un tipo de datos.
Instrucciones ejecutables, que inician acciones. Estas instrucciones pueden llamar a un método o función, y pueden recorrer en bucle o bifurcar bloques de código. Las instrucciones ejecutables incluyen instrucciones assignment, que asignan un valor o una expresión a una variable o constante.
En este tema se describe cada categoría. Además, en este tema se describe cómo combinar varias instrucciones en una sola línea y cómo continuar una instrucción en varias líneas.
Instrucciones de declaración
Las instrucciones de declaración se usan para dar nombre y definir procedimientos, variables, propiedades, matrices y constantes. Al declarar un elemento de programación, también puede definir su tipo de datos, nivel de acceso y ámbito. Para obtener más información, vea Características del elemento declarado.
El ejemplo siguiente contiene tres declaraciones.
Public Sub ApplyFormat()
Const limit As Integer = 33
Dim thisWidget As New widget
' Insert code to implement the procedure.
End Sub
La primera declaración es la Sub instrucción . Junto con su instrucción End Sub de coincidencia, declara un procedimiento denominado applyFormat . También especifica que es , lo que significa que cualquier código que pueda hacer referencia applyFormat Public a él puede llamarlo.
La segunda declaración es la instrucción , que declara la constante , especificando el tipo de datos Const y un valor de limit Integer 33.
La tercera declaración es la Dim instrucción , que declara la variable thisWidget . El tipo de datos es un objeto específico, es decir, un objeto creado a partir de la Widget clase . Puede declarar una variable para que sea de cualquier tipo de datos básico o de cualquier tipo de objeto que se exponga en la aplicación que está usando.
Valores iniciales
Cuando se ejecuta el código que contiene una instrucción de declaración, Visual Basic reserva la memoria necesaria para el elemento declarado. Si el elemento contiene un valor, Visual Basic inicializa en el valor predeterminado para su tipo de datos. Para obtener más información, vea "Behavior" en Dim Statement.
Puede asignar un valor inicial a una variable como parte de su declaración, como se muestra en el ejemplo siguiente.
Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.
Si una variable es una variable de objeto, puede crear explícitamente una instancia de su clase al declararla mediante la palabra clave New Operator, como se muestra en el ejemplo siguiente.
Dim f As New System.Windows.Forms.Form()
Tenga en cuenta que el valor inicial que especifique en una instrucción de declaración no se asigna a una variable hasta que la ejecución alcance su instrucción de declaración. Hasta ese momento, la variable contiene el valor predeterminado para su tipo de datos.
Instrucciones ejecutables
Una instrucción ejecutable realiza una acción. Puede llamar a un procedimiento, bifurcar a otro lugar del código, recorrer varias instrucciones o evaluar una expresión. Una instrucción de asignación es un caso especial de una instrucción ejecutable.
En el ejemplo siguiente se usa una If...Then...Else estructura de control para ejecutar distintos bloques de código basados en el valor de una variable. Dentro de cada bloque de código, For...Next un bucle se ejecuta un número especificado de veces.
Public Sub StartWidget(ByVal aWidget As widget,
ByVal clockwise As Boolean, ByVal revolutions As Integer)
Dim counter As Integer
If clockwise = True Then
For counter = 1 To revolutions
aWidget.SpinClockwise()
Next counter
Else
For counter = 1 To revolutions
aWidget.SpinCounterClockwise()
Next counter
End If
End Sub
La If instrucción del ejemplo anterior comprueba el valor del parámetro clockwise . Si el valor es True , llama al método de spinClockwise aWidget . Si el valor es False , llama al método de spinCounterClockwise aWidget . La If...Then...Else estructura de control termina con End If .
El bucle dentro de cada bloque llama al método adecuado varias veces igual al For...Next valor del revolutions parámetro .
Instrucciones de asignación
Las instrucciones de asignación realizan operaciones de asignación, que consisten en tomar el valor del lado derecho del operador de asignación ( ) y almacenarlo en el elemento de la izquierda, como en el = ejemplo siguiente.
v = 42
En el ejemplo anterior, la instrucción de asignación almacena el valor literal 42 en la variable v .
Elementos de programación aptos
El elemento de programación del lado izquierdo del operador de asignación debe poder aceptar y almacenar un valor. Esto significa que debe ser una variable o propiedad que no sea ReadOnlyo debe ser un elemento de matriz. En el contexto de una instrucción de asignación, este elemento a veces se denomina lvalue, para "left value".
El valor del lado derecho del operador de asignación se genera mediante una expresión, que puede constar de cualquier combinación de literales, constantes, variables, propiedades, elementos de matriz, otras expresiones o llamadas de función. Esto se ilustra en el siguiente ejemplo:
x = y + z + FindResult(3)
En el ejemplo anterior se agrega el valor mantenido en variable al valor que se mantiene en la variable y, a continuación, se agrega el valor devuelto por la y llamada a la función z findResult . A continuación, el valor total de esta expresión se almacena en la variable x .
Tipos de datos en instrucciones de asignación
Además de los valores numéricos, el operador de asignación también puede asignar valores, como se muestra String en el ejemplo siguiente.
Dim a, b As String
a = "String variable assignment"
b = "Con" & "cat" & "enation"
' The preceding statement assigns the value "Concatenation" to b.
También puede asignar valores mediante un literal o una expresión, como se muestra Boolean Boolean en el ejemplo Boolean siguiente.
Dim r, s, t As Boolean
r = True
s = 45 > 1003
t = 45 > 1003 Or 45 > 17
' The preceding statements assign False to s and True to t.
De forma similar, puede asignar los valores adecuados a los elementos de programación del Char tipo de datos , o Date Object . También puede asignar una instancia de objeto a un elemento declarado como de la clase a partir de la cual se crea esa instancia.
Instrucciones de asignación compuestas
Las instrucciones de asignación compuesta realizan primero una operación en una expresión antes de asignarla a un elemento de programación. En el ejemplo siguiente se muestra uno de estos operadores, , que incrementa el valor de la variable en el lado izquierdo del operador por el valor de la expresión += de la derecha.
n += 1
En el ejemplo anterior se agrega 1 al valor de y, a n continuación, se almacena ese nuevo valor en n . Es un equivalente abreviado de la instrucción siguiente:
n = n + 1
Se pueden realizar diversas operaciones de asignación compuesta mediante operadores de este tipo. Para obtener una lista de estos operadores y más información sobre ellos, vea Operadores de asignación.
El operador de asignación de concatenación ( ) es útil para agregar una cadena al final de cadenas ya existentes, como se muestra en el &= ejemplo siguiente.
Dim q As String = "Sample "
q &= "String"
' q now contains "Sample String".
Conversiones de tipos en instrucciones de asignación
El valor que asigne a una variable, propiedad o elemento de matriz debe ser de un tipo de datos adecuado para ese elemento de destino. En general, debe intentar generar un valor del mismo tipo de datos que el del elemento de destino. Sin embargo, algunos tipos se pueden convertir a otros tipos durante la asignación.
Para obtener información sobre cómo convertir entre tipos de datos, vea Conversiones de tipos en Visual Basic. En resumen, Visual Basic convierte automáticamente un valor de un tipo determinado en cualquier otro tipo al que se amplía. Una conversión de ampliación es una de las que siempre se realiza correctamente en tiempo de ejecución y no pierde ningún dato. Por ejemplo, Visual Basic convierte un valor en cuando corresponda, porque Integer Double se amplía a Integer Double . Para obtener más información, consulta Widening and Narrowing Conversions.
Las conversiones de limitación (aquellas que no se amplían) conllevan un riesgo de error en tiempo de ejecución o de pérdida de datos. Puede realizar una conversión de limitación explícitamente mediante una función de conversión de tipos, o bien puede dirigir al compilador para que realice todas las conversiones implícitamente estableciendo Option Strict Off . Para obtener más información, vea Conversiones implícitas y explícitas.
Colocar varias instrucciones en una línea
Puede tener varias instrucciones en una sola línea separadas por el carácter de dos puntos ( : ). Esto se ilustra en el siguiente ejemplo:
Dim sampleString As String = "Hello World" : MsgBox(sampleString)
Aunque en ocasiones resulta práctico, esta forma de sintaxis hace que el código sea difícil de leer y mantener. Por lo tanto, se recomienda mantener una instrucción en una línea.
Continuación de una instrucción en varias líneas
Normalmente, una instrucción se ajusta a una línea, pero cuando es demasiado larga, puede continuar en la línea siguiente mediante una secuencia de continuación de línea, que consta de un espacio seguido de un carácter de subrayado ( ) seguido de un retorno de _ carro. En el ejemplo siguiente, la MsgBox instrucción ejecutable se continúa en dos líneas.
Public Sub DemoBox()
Dim nameVar As String
nameVar = "John"
MsgBox("Hello " & nameVar _
& ". How are you?")
End Sub
Continuación de línea implícita
En muchos casos, puede continuar una instrucción en la siguiente línea consecutiva sin usar el carácter de subrayado ( _ ). Los siguientes elementos de sintaxis continúan implícitamente la instrucción en la siguiente línea de código.
Después de una coma (
,). Por ejemplo:Public Function GetUsername(ByVal username As String, ByVal delimiter As Char, ByVal position As Integer) As String Return username.Split(delimiter)(position) End FunctionDespués de un paréntesis abierto ( ) o antes
(de un paréntesis de cierre ()). Por ejemplo:Dim username = GetUsername( Security.Principal.WindowsIdentity.GetCurrent().Name, CChar("\"), 1 )Después de una llave abierta ( ) o antes
{de una llave de cierre (}). Por ejemplo:Dim customer = New Customer With { .Name = "Terry Adams", .Company = "Adventure Works", .Email = "terry@www.adventure-works.com" }Para obtener más información, vea Inicializadores de objeto: Tipos con nombre y anónimos o Inicializadores de colección.
Después de una expresión incrustada abierta ( ) o antes
<%=del cierre de una expresión incrustada ( ) dentro de un literal%>XML. Por ejemplo:Dim customerXml = <Customer> <Name> <%= customer.Name %> </Name> <Email> <%= customer.Email %> </Email> </Customer>Para obtener más información, vea Expresiones incrustadas en XML.
Después del operador de concatenación (
&). Por ejemplo:cmd.CommandText = "SELECT * FROM Titles JOIN Publishers " & "ON Publishers.PubId = Titles.PubID " & "WHERE Publishers.State = 'CA'"Para obtener más información, vea Operadores enumerados por funcionalidad.
Operadores después de la asignación (
=, , , , , , ,&=, ,:=+=-=*=/=\=^=<<=>>=). Por ejemplo:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)Para obtener más información, vea Operadores enumerados por funcionalidad.
Después de los operadores binarios (
+, , , , , , ,-,/,*, , , ,Mod) dentro<>de<><=una>=^>><<AndAndAlsoOrOrElseLikeXorexpresión. Por ejemplo:Dim memoryInUse = My.Computer.Info.TotalPhysicalMemory + My.Computer.Info.TotalVirtualMemory - My.Computer.Info.AvailablePhysicalMemory - My.Computer.Info.AvailableVirtualMemoryPara obtener más información, vea Operadores enumerados por funcionalidad.
Después de los
IsoperadoresIsNoty . Por ejemplo:If TypeOf inStream Is IO.FileStream AndAlso inStream IsNot Nothing Then ReadFile(inStream) End IfPara obtener más información, vea Operadores enumerados por funcionalidad.
Después de un carácter calificador de miembro (
.) y antes del nombre del miembro. Por ejemplo:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)Sin embargo, debe incluir un carácter de continuación de línea ( ) después de un carácter calificador de miembro cuando se usa la instrucción o se suministran valores en la lista de inicialización
_Withpara un tipo. Considere la posibilidad de dividir la línea después del operador de asignación (por ejemplo, ) cuando use instrucciones=Witho listas de inicialización de objetos. Por ejemplo:' Not allowed: ' Dim aType = New With { . ' PropertyName = "Value" ' Allowed: Dim aType = New With {.PropertyName = "Value"} Dim log As New EventLog() ' Not allowed: ' With log ' . ' Source = "Application" ' End With ' Allowed: With log .Source = "Application" End WithPara obtener más información, vea Con... End With (Inicializadores de instrucción u objeto): tipos con nombre y anónimos.
Después de un calificador de propiedad del eje XML (
.o.@o...). Sin embargo, debe incluir un carácter de continuación de línea ( ) al especificar un calificador de_miembro cuando se usa la palabra claveWith. Por ejemplo:Dim customerName = customerXml. <Name>.Value Dim customerEmail = customerXml... <Email>.ValuePara obtener más información, vea Propiedades del eje XML.
Después de un signo menor que (<) o antes de un signo mayor que ( ) al
>especificar un atributo. También después de un signo mayor que (>) cuando se especifica un atributo. Sin embargo, debe incluir un carácter de continuación de línea ( ) al especificar atributos de nivel de ensamblado_o de nivel de módulo. Por ejemplo:< Serializable() > Public Class Customer Public Property Name As String Public Property Company As String Public Property Email As String End ClassPara obtener más información, vea Información general sobre atributos.
Operadores de consulta antes y después (
Aggregate, , , , , ,Distinct, ,From,Group By, , ,Group JoinJoinLetOrder BySelectySkipSkip WhileTakeTake WhileWhereInIntoOnAscendingDescending). No se puede dividir una línea entre las palabras clave de los operadores de consulta que se conste de varias palabras clave (Order By,Group Join, yTake WhileSkip While). Por ejemplo:Dim vsProcesses = From proc In Process.GetProcesses Where proc.MainWindowTitle.Contains("Visual Studio") Select proc.ProcessName, proc.Id, proc.MainWindowTitlePara obtener más información, vea Consultas.
Después de la
Inpalabra clave en una instrucciónFor Each. Por ejemplo:For Each p In vsProcesses Console.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}", p.ProcessName, p.Id, p.MainWindowTitle) NextPara obtener más información, vea For Each... Instrucción Next.
Después de la
Frompalabra clave en un inicializador de colección. Por ejemplo:Dim days = New List(Of String) From { "Mo", "Tu", "We", "Th", "F", "Sa", "Su" }Para obtener más información, vea Inicializadores de colección.
Agregar comentarios
El código fuente no siempre se explica por sí mismo, incluso para el programador que lo escribió. Por lo tanto, para ayudar a documentar su código, la mayoría de los programadores hacen un uso libre de los comentarios insertados. Los comentarios en el código pueden explicar un procedimiento o una instrucción determinada a cualquier persona que lea o trabaje con él más adelante. Visual Basic omite los comentarios durante la compilación y no afectan al código compilado.
Las líneas de comentario comienzan por un apóstrofo ( ' ) o seguido de un REM espacio. Se pueden agregar en cualquier parte del código, excepto dentro de una cadena. Para anexar un comentario a una instrucción, inserte un apóstrofo o después de REM la instrucción , seguido del comentario . Los comentarios también pueden ir en su propia línea independiente. En el ejemplo siguiente se muestran estas posibilidades.
' This is a comment on a separate code line.
REM This is another comment on a separate code line.
x += a(i) * b(i) ' Add this amount to total.
MsgBox(statusMessage) REM Inform operator of status.
Comprobación de errores de compilación
Si, después de escribir una línea de código, la línea se muestra con un subrayado azul ondulado (también puede aparecer un mensaje de error), se produce un error de sintaxis en la instrucción . Debe averiguar cuál es el problema de la instrucción (al mirar en la lista de tareas o mantener el puntero sobre el error con el puntero del mouse y leer el mensaje de error) y corregirlo. Hasta que haya corregido todos los errores de sintaxis en el código, el programa no se compilará correctamente.
Secciones relacionadas
| Término | Definición |
|---|---|
| Operadores de asignación | Proporciona vínculos a páginas de referencia de lenguaje que abarcan operadores de asignación como = *= , y &= . |
| Operadores y expresiones | Muestra cómo combinar elementos con operadores para producir nuevos valores. |
| Procedimiento Interrupción y combinación de instrucciones en código | Muestra cómo dividir una sola instrucción en varias líneas y cómo colocar varias instrucciones en la misma línea. |
| Procedimiento Instrucciones de etiquetas | Muestra cómo etiquetar una línea de código. |