Visual Basic ( VB ), originalmente llamado Visual Basic .NET ( VB.NET ), es un lenguaje de programación orientado a objetos de múltiples paradigmas , implementado en .NET , Mono y .NET Framework . Microsoft lanzó VB.NET en 2002 como sucesor de su lenguaje Visual Basic original , cuya última versión fue Visual Basic 6.0. Aunque la parte ".NET" del nombre se eliminó en 2005, este artículo utiliza "Visual Basic [.NET]" para referirse a todos los lenguajes de Visual Basic lanzados desde 2002, con el fin de distinguirlos del Visual Basic clásico . Junto con C# y F# , es uno de los tres lenguajes principales dirigidos al ecosistema .NET. Microsoft actualizó su estrategia de lenguaje VB el 6 de febrero de 2023, indicando que VB ahora es un lenguaje estable y que Microsoft seguirá manteniéndolo. [6]
El entorno de desarrollo integrado (IDE) de Microsoft para desarrollar en Visual Basic es Visual Studio . La mayoría de las ediciones de Visual Studio son comerciales ; las únicas excepciones son Visual Studio Express y Visual Studio Community , que son software gratuito . Además, el SDK de .NET Framework incluye un compilador de línea de comandos gratuito llamado vbc.exe. Mono también incluye un compilador VB.NET de línea de comandos.
Visual Basic se utiliza a menudo junto con la biblioteca GUI de Windows Forms para crear aplicaciones de escritorio para Windows . La programación para Windows Forms con Visual Basic implica arrastrar y soltar controles en un formulario utilizando un diseñador GUI y escribir el código correspondiente para cada control.
La biblioteca Windows Forms se usa más comúnmente para crear interfaces GUI en Visual Basic. Todos los elementos visuales de la biblioteca de clases de Windows Forms derivan de la clase Control. Esto proporciona la funcionalidad mínima de un elemento de la interfaz de usuario, como ubicación, tamaño, color, fuente, texto, así como eventos comunes como hacer clic y arrastrar/soltar. La clase Control también tiene soporte de acoplamiento para permitir que un control reorganice su posición debajo de su padre.
Los formularios normalmente se diseñan en Visual Studio IDE . En Visual Studio, los formularios se crean mediante técnicas de arrastrar y soltar . Se utiliza una herramienta para colocar controles (por ejemplo, cuadros de texto, botones, etc.) en el formulario (ventana). Los controles tienen atributos y controladores de eventos asociados a ellos. Los valores predeterminados se proporcionan cuando se crea el control, pero el programador puede cambiarlos. Muchos valores de atributos se pueden modificar durante el tiempo de ejecución en función de las acciones del usuario o cambios en el entorno, proporcionando una aplicación dinámica. Por ejemplo, se puede insertar código en el controlador de eventos de cambio de tamaño del formulario para reposicionar un control de modo que permanezca centrado en el formulario, se expanda para llenar el formulario, etc. Al insertar código en el controlador de eventos para presionar una tecla en un cuadro de texto, el programa puede traducir automáticamente las mayúsculas y minúsculas del texto que se ingresa, o incluso evitar que se inserten ciertos caracteres.
Visual Basic utiliza declaraciones para especificar acciones. La declaración más común es una declaración de expresión, que consta de una expresión que se va a evaluar, en una sola línea. Como parte de esa evaluación, se pueden llamar funciones o subrutinas y se pueden asignar nuevos valores a las variables . Para modificar la ejecución secuencial normal de declaraciones, Visual Basic proporciona varias declaraciones de flujo de control identificadas por palabras clave reservadas. La programación estructurada está respaldada por varias construcciones, incluidas dos construcciones de ejecución condicional ( ... ... ... y ... ... ) y cuatro construcciones de ejecución iterativa (bucle) ( ... , ... , y . .. ). La declaración ... tiene secciones separadas de inicialización y prueba, las cuales deben estar presentes. (Vea los ejemplos a continuación). La declaración recorre cada valor de una lista.If
Then
Else
End If
Select Case
Case
End Select
Do
Loop
For
To
For Each
While
End While
For
To
For Each
Además, en Visual Basic:
REM
, colocada al principio de una línea o después de cualquier número de espacios o caracteres de tabulación al principio de una línea, o después de otro código en una línea, indica que (el resto de) La línea es un comentario .El siguiente es un programa de Visual Basic muy simple, una versión del clásico ejemplo "¡ Hola, mundo! " creado como una aplicación de consola:
Módulo Módulo1 Sub Main () ' El clásico "¡Hola mundo!" Programa de demostración Consola . WriteLine ( "¡Hola, mundo!" ) Fin del subtítulo Módulo final
Imprime " ¡Hola, mundo! " en una ventana de línea de comandos . Cada línea tiene un propósito específico, de la siguiente manera:
Módulo Módulo1
Esta es una definición de módulo. Los módulos son una división de código, que puede contener cualquier tipo de objeto, como constantes o variables, funciones o métodos, o clases, pero no se pueden instanciar como objetos como clases y no pueden heredar de otros módulos. Los módulos sirven como contenedores de código al que se puede hacer referencia desde otras partes de un programa. [8]
Es una práctica común que un módulo y el archivo de código que lo contiene tengan el mismo nombre. Sin embargo, esto no es necesario, ya que un único archivo de código puede contener más de un módulo y/o clase.
Sub principal ()
Esta línea define una subrutina llamada "Principal". "Principal" es el punto de entrada, donde el programa comienza a ejecutarse. [9]
Consola . WriteLine ( "¡Hola, mundo!" )
Esta línea realiza la tarea real de escribir el resultado. La consola es un objeto del sistema que representa una interfaz de línea de comandos (también conocida como "consola") y otorga acceso programático a los flujos estándar del sistema operativo . El programa llama al método de consola WriteLine, lo que hace que la cadena que se le pasa se muestre en la consola.
En lugar de Console.WriteLine, se podría usar MsgBox, que imprime el mensaje en un cuadro de diálogo en lugar de una ventana de línea de comandos. [10]
Este fragmento de código envía el Triángulo de Floyd a la consola:
Importaciones Sistema.Consola Programa del módulo Subprincipal () filas oscuras como número entero 'Validación de entrada. Hacer hasta un número entero . TryParse ( ReadLine ( "Ingrese un valor para cuántas filas se mostrarán: " & vbcrlf ), filas ) AndAlso filas >= 1 WriteLine ( "El rango permitido es 1 y {0}" , Integer . MaxValue ) Loop ' Salida de Floyd Triángulo Atenuar actual Como entero = 1 Atenuar fila Como entero Atenuar columna Como entero Para fila = 1 A filas Para columna = 1 A fila Escribir ( "{0,-2} " , actual ) actual += 1 Siguiente WriteLine () Siguiente fin Sub ''' <summary> ''' Como Console.ReadLine pero toma una cadena de mensaje. ''' </summary> Función ReadLine ( mensaje opcional Como cadena = Nada ) Como cadena Si el mensaje no es nada , entonces escriba ( mensaje ) Fin si Consola de retorno . Función final ReadLine () Módulo final
Si Visual Basic .NET debe considerarse simplemente otra versión de Visual Basic o un lenguaje completamente diferente es un tema de debate. Hay nuevas incorporaciones para admitir nuevas funciones, como el manejo estructurado de excepciones y expresiones en cortocircuito. Además, se produjeron dos cambios importantes en el tipo de datos con el cambio a VB.NET: en comparación con Visual Basic 6, la longitud del Integer
tipo de datos se duplicó de 16 bits a 32 bits, y la longitud del Long
tipo de datos se duplicó de 32 bits. a 64 bits. Esto es válido para todas las versiones de VB.NET. Un entero de 16 bits en todas las versiones de VB.NET ahora se conoce como Short
. De manera similar, el editor de Windows Forms es muy similar en estilo y función al editor de formularios de Visual Basic.
Lo que ha cambiado significativamente es la semántica: desde la de un lenguaje de programación basado en objetos que se ejecuta en un motor determinista con recuento de referencias basado en COM hasta un lenguaje totalmente orientado a objetos respaldado por .NET Framework , que consiste en una combinación de Common Language Runtime (una máquina virtual que utiliza recolección de basura generacional y un motor de compilación justo a tiempo ) y una biblioteca de clases mucho más grande . La mayor amplitud de este último también es un problema con el que los desarrolladores de VB tienen que lidiar cuando llegan al lenguaje, aunque esto se soluciona en cierta medida con la característica Mi en Visual Studio 2005.
Los cambios han alterado muchas suposiciones subyacentes sobre lo "correcto" que se debe hacer con respecto al rendimiento y la mantenibilidad. Algunas funciones y bibliotecas ya no existen; hay otros disponibles, pero no tan eficientes como las alternativas .NET "nativas". Incluso si se compilan, la mayoría de las aplicaciones de Visual Basic 6 convertidas requerirán cierto nivel de refactorización para aprovechar al máximo el nuevo lenguaje. Hay documentación disponible para cubrir cambios en la sintaxis, depuración de aplicaciones, implementación y terminología. [11]
Los siguientes ejemplos simples comparan la sintaxis de VB y VB.NET. Suponen que el desarrollador creó un formulario, colocó un botón en él y asoció las subrutinas demostradas en cada ejemplo con el controlador de eventos de clic del botón mencionado. Cada ejemplo crea un cuadro de mensaje "Hola mundo" después de hacer clic en el botón del formulario.
Visual Básico 6:
Subcomando privado1_Click () MsgBox "Hola mundo " Fin Sub
VB.NET (se puede utilizar la clase MsgBox o MessageBox):
Subbotón privado1_Click ( remitente como objeto , e como EventArgs ) Maneja el botón1 . Haga clic en MsgBox ( "Hola, mundo" ) Fin Sub
Sub
y End Sub
cuando se hace doble clic en el botón correspondiente en la vista de diseño. Visual Basic .NET también generará las declaraciones Class
y necesarias End Class
. El desarrollador sólo necesita agregar la declaración para mostrar el cuadro de mensaje "Hola, mundo".Call
).Command1
y Button1
no son obligatorios. Sin embargo, estos son nombres predeterminados para un botón de comando en Visual Basic 6 y VB.NET respectivamente.Handles
palabra clave se usa para hacer que el sub Button1_Click
sea un controlador para el Click
evento del objeto Button1
. En Visual Basic 6, los subcontroladores de eventos deben tener un nombre específico que consta del nombre del objeto ("Command1"), un guión bajo ("_") y el nombre del evento ("Click", por lo tanto, "Command1_Click").MessageBox.Show
en el Microsoft.VisualBasic
espacio de nombres que se puede usar (en lugar de MsgBox
) de manera similar a la función correspondiente en Visual Basic 6. Existe una controversia [12] sobre qué función usar como mejor práctica (no solo restringida a mostrar cuadros de mensaje). pero también sobre otras características del espacio de Microsoft.VisualBasic
nombres). Algunos programadores prefieren hacer las cosas "a la manera .NET", ya que las clases de Framework tienen más funciones y son menos específicas del lenguaje. Otros argumentan que el uso de características específicas del lenguaje hace que el código sea más legible (por ejemplo, usar int
(C#) o Integer
(VB.NET) en lugar de System.Int32
).ByVal sender as Object, ByVal e as EventArgs
se ha vuelto opcional.El siguiente ejemplo demuestra una diferencia entre Visual Basic 6 y VB.NET. Ambos ejemplos cierran la ventana activa .
Visual Básico 6:
Sub cmdClose_Click ( ) Descargarme End Sub
VB.NET:
Sub btnClose_Click ( remitente como objeto , e como EventArgs ) Maneja btnClose . Haga clic en Cerrar () Fin Sub
El prefijo 'cmd' se reemplaza por el prefijo 'btn', conforme a la nueva convención mencionada anteriormente. [ ¿cual? ]
Visual Basic 6 no proporcionaba atajos de operador comunes. Los siguientes son equivalentes:
Visual Básico 6:
Sub Timer1_Timer () 'Reduce la altura del formulario en un píxel por tick Yo . Altura = Yo . Altura - 1 extremo secundario
VB.NET:
Sub Timer1_Tick ( remitente como objeto , e como EventArgs ) maneja Timer1 . Mírame . Altura -= 1 Sub final
C# y Visual Basic son los primeros lenguajes de Microsoft creados para programar en .NET Framework (luego se agregaron F# y más; otros también agregaron lenguajes). Aunque C# y Visual Basic son sintácticamente diferentes, ahí es donde terminan la mayoría de las diferencias. Microsoft desarrolló ambos lenguajes para que fueran parte de la misma plataforma de desarrollo .NET Framework. Ambos son desarrollados, administrados y respaldados por el mismo equipo de desarrollo de lenguajes de Microsoft. [13] Se compilan en el mismo lenguaje intermedio (IL), que se ejecuta en las mismas bibliotecas de tiempo de ejecución de .NET Framework. [14] Aunque existen algunas diferencias en las construcciones de programación, sus diferencias son principalmente sintácticas y, suponiendo que se eviten las bibliotecas de "Compatibilidad" de Visual Basic proporcionadas por Microsoft para ayudar a la conversión desde Visual Basic 6, casi todas las características en VB tienen una característica equivalente. en C# y viceversa. Por último, ambos lenguajes hacen referencia a las mismas clases base de .NET Framework para ampliar su funcionalidad. Como resultado, con pocas excepciones, un programa escrito en cualquiera de los idiomas se puede ejecutar a través de un convertidor de sintaxis simple para traducir al otro. Hay muchos productos de código abierto y disponibles comercialmente para esta tarea.
Requiere un botón llamado Botón1.
Formulario de clase pública1 Subbotón privado1_Click ( remitente como objeto , e como Args de evento ) Maneja el botón1 . Haga clic en MsgBox ( "¡Hola mundo!" , MsgBoxStyle . Información , "¡Hola mundo!" ) 'Muestra un mensaje que dice "¡Hola mundo!". Clase final subfinal
Módulo Módulo1 Subprincipal ( ) Consola . WriteLine ( "¡Hola mundo!" ) ' Escribe en la consola "¡Hola mundo!" y comenzar una nueva línea. Consola . ReadKey () 'El usuario debe presionar cualquier tecla antes de que finalice la aplicación. Módulo final subfinal
Requiere un TextBox titulado 'TextBox1' y un botón llamado Button1.
Clase pública Form1 Sub botón privado1_Click ( remitente como objeto , e como EventArgs ) Maneja el botón1 . Haga clic en CrearObjeto ( "Sapi.Spvoice" ). Hablar ( TextBox1 . Texto ) Fin Sub Fin Clase
Módulo Módulo1 Voz privada = CreateObject ( "Sapi.Spvoice" ) Texto privado como cadena Sub principal () Consola . Escribir ( "Ingrese el texto para hablar: " ) ' Diga "Ingrese el texto para hablar: " Texto = Consola . ReadLine () 'El usuario debe ingresar el texto para hablar. Voz . Hablar ( Texto ) 'Di el texto que el usuario ha ingresado. Subtítulo final Módulo final
Después de la versión 6.0 clásica de Visual Basic , la primera versión de Visual Basic .NET debutó en 2002. A partir de 2020 [actualizar], se lanzan diez versiones de Visual Basic .NET.
La primera versión, Visual Basic .NET, se basa en .NET Framework 1.0 . La característica más importante es el código administrado , que contrasta con el clásico Visual Basic.
Visual Basic .NET 2003 se lanzó con .NET Framework 1.1 . Las nuevas características incluyeron soporte para .NET Compact Framework y un mejor asistente de actualización de VB . También se realizaron mejoras en el rendimiento y la confiabilidad de .NET IDE (particularmente el compilador en segundo plano) y el tiempo de ejecución. Además, Visual Basic .NET 2003 estaba disponible en Visual Studio.NET Academic Edition, distribuido a un cierto número de académicos [ palabras de comadreja ] de cada país sin costo.
Después de Visual Basic .NET 2003, Microsoft eliminó ".NET" del nombre del producto y llamó a la siguiente versión Visual Basic 2005.
Para esta versión, Microsoft agregó muchas características destinadas a reforzar el enfoque de Visual Basic .NET como plataforma de desarrollo rápido de aplicaciones y diferenciarlo aún más de C# , que incluyen:
My.Form2.Text = " MainForm "
System.WindowsApplication1.Forms.Form2.text = " MainForm "
Para cerrar las brechas entre él y otros lenguajes .NET, esta versión agregó:
Visual Basic 2005 introdujo el IsNot
operador que 'If X IsNot Y'
equivale a 'If Not X Is Y'
. Ganó notoriedad [20] cuando se descubrió que era objeto de una solicitud de patente de Microsoft. [21] [22]
Visual Basic 9.0 se lanzó junto con .NET Framework 3.5 el 19 de noviembre de 2007.
Para esta versión, Microsoft agregó muchas características, que incluyen:
En abril de 2010, Microsoft lanzó Visual Basic 2010. Microsoft había planeado usar Dynamic Language Runtime (DLR) para esa versión [23] pero cambió a una estrategia de coevolución entre Visual Basic y el lenguaje hermano C# para acercar ambos lenguajes a una paridad más estrecha. unos y otros. La capacidad innata de Visual Basic para interactuar dinámicamente con objetos CLR y COM se ha mejorado para funcionar con lenguajes dinámicos creados en DLR, como IronPython y IronRuby . [24] El compilador de Visual Basic se mejoró para inferir la continuación de línea en un conjunto de contextos comunes, eliminando en muchos casos la necesidad de los caracteres de continuación de línea " _". Además, el soporte existente de funciones en línea se complementó con soporte para Subs en línea, así como versiones multilínea de lambdas Sub y Function. [25]
Visual Basic 2012 se lanzó junto con .NET Framework 4.5 . Las principales características introducidas en esta versión incluyen: [ se necesita más explicación ]
Visual Basic 2013 se lanzó junto con .NET Framework 4.5.1 con Visual Studio 2013. También puede crear aplicaciones .NET Framework 4.5.2 instalando Developer Pack. [26]
Visual Basic 2015 (nombre en código VB "14.0") se lanzó con Visual Studio 2015. Las características del lenguaje incluyen un nuevo "?". operador para realizar comprobaciones nulas en línea y se incluye una nueva función de interpolación de cadenas para formatear cadenas en línea. [27]
Visual Basic 2017 (nombre en código VB "15.0") se lanzó con Visual Studio 2017. Amplía la compatibilidad con las nuevas funciones del lenguaje Visual Basic 15 con la revisión 2017, 15.3, 15.5, 15.8. Introduce nuevas refactorizaciones que permiten organizar el código fuente con una sola acción. [28] [29]
Visual Basic 2019 (nombre en código VB "16.0") se lanzó con Visual Studio 2019. [30] Es la primera versión de Visual Basic centrada en .NET Core. [31]
El compilador oficial de Visual Basic está escrito en Visual Basic y está disponible en GitHub como parte de .NET Compiler Platform . [32] La creación de herramientas de código abierto para el desarrollo de Visual Basic ha sido lenta en comparación con C# , aunque la plataforma de desarrollo Mono proporciona una implementación de bibliotecas específicas de Visual Basic y un compilador compatible con Visual Basic 2005 escrito en Visual Basic, [33] así como bibliotecas de marco estándar, como la biblioteca GUI de Windows Forms .
MonoDevelop era un IDE alternativo de código abierto . El entorno Gambas también es similar pero distinto de Visual Basic, al igual que el Editor Visual FB para FreeBasic .
Con el nuevo DLR, tenemos soporte para IronPython, IronRuby, Javascript y la nueva compilación dinámica VBx.
Visual Basic se une a objetos de lenguajes dinámicos como IronPython y IronRuby.