Visual Basic .NET - Visual Basic .NET

Visual Basic
VB.NET Logo.svg
Paradigma Multi-paradigma : estructurado , imperativo , orientado a objetos , declarativo , genérico , reflexivo e impulsado por eventos
Diseñada por Microsoft
Desarrollador Microsoft
Apareció por primera vez 2001 ; hace 20 años ( 2001 )
Lanzamiento estable
2019 versión 16.9 / 2 de marzo de 2021 ; hace 5 meses ( 02/03/2021 )
Disciplina de mecanografía Estático , fuerte y débil , seguro e inseguro , nominativo
Plataforma .NET Framework , Mono , .NET
SO Principalmente Windows
También en Android , BSD , iOS , Linux , macOS , Solaris y Unix
Licencia Compilador de Roslyn : Licencia Apache 2.0
Extensiones de nombre de archivo .vb
Sitio web docs .microsoft .com / dotnet / visual-basic /
Implementaciones importantes
.NET Framework SDK , Roslyn Compiler y Mono
Dialectos
Microsoft Visual Basic
Influenciado por
Visual Basic clásico
Influenciado
Pequeño Básico

Visual Basic , originalmente llamado Visual Basic .NET ( VB.NET ), es un multi-paradigma , orientado a objetos lenguaje de programación , implementado en .NET , Mono , y el .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 publicados desde 2002, con el fin de distinguir entre ellos y el Visual Basic clásico . Junto con C # y F # , es uno de los tres lenguajes principales dirigidos al ecosistema .NET. El 11 de marzo de 2020, Microsoft anunció que la evolución del lenguaje VB.NET había concluido.

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 programas gratuitos . Además, .NET Framework SDK 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 usa 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 de GUI y escribir el código correspondiente para cada control.

Sintaxis

Visual Basic usa declaraciones para especificar acciones. La declaración más común es una declaración de expresión, que consiste en una expresión 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 instrucciones, Visual Basic proporciona varias instrucciones de flujo de control identificadas por palabras clave reservadas. La programación estructurada es compatible con varias construcciones, incluidas dos construcciones de ejecución condicional ( ... ... ... y ... ... ) y tres 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 en una lista. IfThenElseEnd IfSelect CaseCaseEnd SelectDoLoopForToFor EachForToFor Each

Además, en Visual Basic:

  • No existe una forma unificada de definir bloques de declaraciones. En cambio, ciertas palabras clave, como "Si ... Entonces" o "Sub" se interpretan como inicios de sub-bloques de código y tienen palabras clave de terminación coincidentes como "Fin si" o "Fin sub".
  • Las declaraciones terminan con dos puntos (":") o con el final de la línea . Las instrucciones de varias líneas en Visual Basic están habilitadas con "_" al final de cada una de esas líneas. La necesidad del carácter de continuación de subrayado se eliminó en gran medida en la versión 10 y versiones posteriores.
  • El signo igual ("=") se usa tanto para asignar valores a las variables como en la comparación.
  • Los corchetes (paréntesis) se utilizan con matrices , tanto para declararlas como para obtener un valor en un índice dado en una de ellas. Visual Basic utiliza corchetes para definir los parámetros de subrutinas o funciones.
  • Una comilla simple (') o la palabra clave REM, colocada al principio de una línea o después de cualquier número de espacios o caracteres de tabulación al comienzo de una línea, o después de otro código en una línea, indica que el (resto del) la línea es un comentario .

Ejemplo simple

El siguiente es un programa de Visual Basic muy simple, una versión del ejemplo clásico " ¡Hola, mundo! " Creado como una aplicación de consola:

Module Module1

    Sub Main()
        ' The classic "Hello, World!" demonstration program
        Console.WriteLine("Hello, World!")
    End Sub

End Module

Imprime " ¡Hola, mundo! " En una ventana de línea de comandos . Cada línea tiene un propósito específico, como sigue:

Module Module1

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 se 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.
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 solo archivo de código puede contener más de un módulo y / o clase.

Sub Main()

Esta línea define una subrutina llamada "Principal". "Principal" es el punto de entrada, donde el programa comienza a ejecutarse.

Console.WriteLine("Hello, world!")

Esta línea realiza la tarea real de escribir la salida. La consola es un objeto del sistema, que representa una interfaz de línea de comandos (también conocida como "consola") y que otorga acceso mediante programación a los flujos estándar del sistema operativo . El programa llama al método de la consola WriteLine, 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.

Ejemplo complejo

Este fragmento de código envía el Triángulo de Floyd a la consola:

Imports System.Console

Module Program

    Sub Main()
        Dim rows As Integer

        ' Input validation.
        Do Until Integer.TryParse(ReadLine("Enter a value for how many rows to be displayed: " & vbcrlf), rows) AndAlso rows >= 1
            WriteLine("Allowed range is 1 and {0}", Integer.MaxValue)
        Loop
      
        ' Output of Floyd's Triangle
        Dim current As Integer = 1
        Dim row As Integer 
        Dim column As Integer
        For row = 1 To rows
            For column = 1 To row
                Write("{0,-2} ", current)
                current += 1
            Next

            WriteLine()
        Next
    End Sub

    ''' <summary>
    ''' Like Console.ReadLine but takes a prompt string.
    ''' </summary>
    Function ReadLine(Optional prompt As String = Nothing) As String
        If prompt IsNot Nothing Then
            Write(prompt)
        End If

        Return Console.ReadLine()
    End Function

End Module

Comparación con el Visual Basic clásico

Si Visual Basic .NET debe considerarse como una versión más de Visual Basic o como 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, el Integer tipo de datos se ha duplicado en longitud de 16 bits a 32 bits y el Long tipo de datos se ha duplicado en longitud de 32 bits. a 64 bits. Esto es cierto 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 formularios de Windows es muy similar en estilo y función al editor de formularios de Visual Basic.

Las cosas que han cambiado de manera significativa son la semántica-desde las de un lenguaje de programación basado en objetos que se ejecuta en un determinista , de referencia contado motor basado en COM a un totalmente orientado a objetos lenguaje respaldado por el .NET Framework , que consiste en una combinación del Common Language Runtime (una máquina virtual que usa 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 es algo abordado por la función My en Visual Studio 2005.

Los cambios han alterado muchas suposiciones subyacentes sobre lo "correcto" que se debe hacer con respecto al rendimiento y la capacidad de mantenimiento. 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. La documentación está disponible para cubrir cambios en la sintaxis, depuración de aplicaciones, implementación y terminología.

Ejemplos comparativos

Los siguientes ejemplos simples comparan la sintaxis de VB y VB.NET. Asumen que el desarrollador ha creado un formulario, colocado un botón en él y ha asociado las subrutinas mostradas 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 Basic 6:

Private Sub Command1_Click()
    MsgBox "Hello, World"
End Sub

VB.NET (se puede utilizar la clase MsgBox o MessageBox):

Private Sub Button1_Click(sender As object, e As EventArgs) Handles Button1.Click
    MsgBox("Hello, World")
End Sub
  • Tanto Visual Basic 6 como Visual Basic .NET generan automáticamente las instrucciones Suby End Subcuando se hace doble clic en el botón correspondiente en la vista de diseño. Visual Basic .NET también generará las instrucciones Classy necesarias End Class. El desarrollador solo necesita agregar la declaración para mostrar el cuadro de mensaje "Hola, mundo".
  • Todas las llamadas a procedimientos deben hacerse con paréntesis en VB.NET, mientras que en Visual Basic 6 había diferentes convenciones para funciones (se requieren paréntesis) y subs (no se permiten paréntesis, a menos que se llamen con la palabra clave Call).
  • Los nombres Command1y Button1no son obligatorios. Sin embargo, estos son nombres predeterminados para un botón de comando en Visual Basic 6 y VB.NET respectivamente.
  • En VB.NET, la Handlespalabra clave se usa para hacer que el sub sea Button1_Clickun controlador para el Clickevento del objeto Button1. En Visual Basic 6, los subs de controlador 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", de ahí "Command1_Click").
  • Hay una función llamada MessageBox.Showen el Microsoft.VisualBasicespacio 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 sobre qué función usar como práctica recomendada (no solo se limita a mostrar cuadros de mensaje, sino también a otras características del Microsoft.VisualBasicespacio de nombres). Algunos programadores prefieren hacer las cosas "a la manera .NET", ya que las clases de Framework tienen más características 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, usando int(C #) o Integer(VB.NET) en lugar de System.Int32).
  • En Visual Basic 2008, la inclusión de se ByVal sender as Object, ByVal e as EventArgsha vuelto opcional.

El siguiente ejemplo demuestra una diferencia entre Visual Basic 6 y VB.NET. Ambos ejemplos cierran la ventana activa .

Visual Basic 6:

Sub cmdClose_Click()
    Unload Me
End Sub

VB.NET:

Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
    Close()
End Sub

El prefijo 'cmd' se reemplaza por el prefijo 'btn', conforme a la nueva convención mencionada anteriormente.

Visual Basic 6 no proporcionó atajos de operador comunes. Los siguientes son equivalentes:

Visual Basic 6:

Sub Timer1_Timer()
    'Reduces Form Height by one pixel per tick
    Me.Height = Me.Height - 1
End Sub

VB.NET:

Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Me.Height -= 1
End Sub

Comparación con C #

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 idiomas). Aunque C # y Visual Basic son sintácticamente diferentes, ahí es donde terminan las diferencias. Microsoft desarrolló ambos lenguajes para ser parte de la misma plataforma de desarrollo .NET Framework. Ambos son desarrollados, administrados y respaldados por el mismo equipo de desarrollo de idiomas en Microsoft. Se compilan en el mismo lenguaje intermedio (IL), que se ejecuta en las mismas bibliotecas de tiempo de ejecución de .NET Framework. 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 de Visual Basic 6, casi todas las funciones de VB tienen una función 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 cualquier idioma se puede ejecutar a través de un convertidor de sintaxis simple para traducirlo al otro. Hay muchos productos de código abierto y disponibles comercialmente para esta tarea.

Ejemplos de

¡Hola Mundo!

Aplicación de Windows Forms

Requiere un botón llamado Button1.

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MsgBox("Hello world!", MsgBoxStyle.Information, "Hello world!") ' Show a message that says "Hello world!".
    End Sub
End Class
¡Hola Mundo! ventana

Aplicación de consola

Module Module1

    Sub Main()
        Console.WriteLine("Hello world!") ' Write in the console "Hello world!" and start a new line.
        Console.ReadKey() ' The user must press any key before the application ends.
    End Sub
End Module

Discurso

Aplicación de Windows Forms

Requiere un TextBox titulado 'TextBox1' y un botón llamado Button1.

Public Class Form1
    
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        CreateObject("Sapi.Spvoice").Speak(TextBox1.Text)
    End Sub
End Class

Aplicación de consola

Module Module1
    Private Voice = CreateObject("Sapi.Spvoice")
    Private Text As String

    Sub Main()
        Console.Write("Enter the text to speak: ") ' Say "Enter the text to speak: "
        Text = Console.ReadLine() ' The user must enter the text to speak.
        Voice.Speak(Text) ' Speak the text the user has entered.
    End Sub
End Module

Historial de versiones

Después de la versión clásica de Visual Basic 6.0, la primera versión de Visual Basic .NET debutó en 2002. A partir de 2020, se lanzaron diez versiones de Visual Basic .NET.

2002 (VB 7.0)

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.

2003 (VB 7.1)

Visual Basic .NET 2003 se lanzó con .NET Framework 1.1 . Las nuevas características incluyen 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 de cada país sin costo.

2005 (VB 8.0)

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 una plataforma de desarrollo de aplicaciones rápido y diferenciarla aún más de C # ., Que incluyen:

  • Editar y continuar función
  • Evaluación de expresión en tiempo de diseño
  • Un pseudoespacio de nombres llamado "Mi", que proporciona:
    • Fácil acceso a ciertas áreas de .NET Framework que, de otro modo, requerirían un código significativo para acceder, como usar en lugar deMy.Form2.Text = " MainForm "System.WindowsApplication1.Forms.Form2.text = " MainForm "
    • Clases generadas dinámicamente (por ejemplo, My.Forms )
  • Conversor de VB a VB.NET mejorado
  • Una palabra clave "using", que simplifica el uso de objetos que requieren el patrón Dispose para liberar recursos.
  • Función Just My Code , que oculta (pasa por alto) el código repetitivo escrito por el IDE de Visual Studio .NET y el código de la biblioteca del sistema durante la depuración
  • Enlace de fuente de datos, facilitando el desarrollo de cliente / servidor de base de datos

Para cerrar las brechas entre él y otros lenguajes .NET, esta versión agregó:

Visual Basic 2005 introdujo el IsNotoperador que 'If X IsNot Y'equivale a 'If Not X Is Y'. Ganó notoriedad cuando se descubrió que era objeto de una solicitud de patente de Microsoft.

2008 (VB 9.0)

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:

2010 (VB 10.0)

En abril de 2010, Microsoft lanzó Visual Basic 2010. Microsoft había planeado usar Dynamic Language Runtime (DLR) para esa versión, pero cambió a una estrategia de evolución conjunta entre Visual Basic y el lenguaje hermano C # para acercar ambos lenguajes entre sí. La capacidad innata de Visual Basic para interactuar dinámicamente con objetos CLR y COM se ha mejorado para trabajar con lenguajes dinámicos creados en DLR como IronPython y IronRuby . El compilador de Visual Basic se mejoró para inferir la continuación de línea en un conjunto de contextos comunes, en muchos casos eliminando la necesidad de los caracteres de continuación de línea "_". Además, la compatibilidad existente con las funciones en línea se complementó con la compatibilidad con los subs en línea, así como con las versiones multilínea de las lambdas de sub y función.

2012 (VB 11.0)

Visual Basic 2012 se lanzó junto con .NET Framework 4.5 . Las principales características introducidas en esta versión incluyen:

  • Programación asincrónica con declaraciones "async" y "await"
  • Iteradores
  • Jerarquía de llamadas
  • Información de la llamada
  • Palabra clave "global" en declaraciones de "espacio de nombres"

2013 (VB 12.0)

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.

2015 (VB 14.0)

Visual Basic 2015 (nombre en código VB "14.0") se lanzó con Visual Studio 2015. Las características del idioma 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.

2017 (VB 15.x)

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.

2019 (VB 16.0)

Visual Basic 2019 (nombre en código VB "16.0") fue lanzado con Visual Studio 2019. Es la primera versión de Visual Basic enfocada en .NET Core.

Desarrollo multiplataforma y de código abierto

El compilador oficial de Visual Basic está escrito en Visual Basic y está disponible en GitHub como parte de .NET Compiler Platform . 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, así como bibliotecas de marco estándar. como la biblioteca GUI de Windows Forms .

SharpDevelop y MonoDevelop son IDE alternativos de código abierto . El entorno de Gambas también es similar pero distinto de Visual Basic.

Ver también

Referencias

Otras lecturas

  1. "Especificación del lenguaje Visual Basic 8.0" . Corporación Microsoft. 15 de noviembre de 2005 . Consultado el 10 de diciembre de 2010 .
  2. "Especificación del lenguaje Visual Basic 9.0" . Corporación Microsoft. 19 de diciembre de 2007 . Consultado el 28 de septiembre de 2011 .
  3. "Especificación del lenguaje Visual Basic 11.0" . Corporación Microsoft. 7 de junio de 2013 . Consultado el 22 de septiembre de 2013 .

enlaces externos