Aprendizaje de los conceptos básicos de sintaxis de VB.NET
La siguiente tabla resume los cambios gramaticales del idioma. Tenga en cuenta que estas tablas no enumeran todos los cambios, pero sí algunos de los más importantes.
La Tabla A compara algunas formas de sintaxis familiares en VB6 con las formas de sintaxis en VB6 que más se parecen a la funcionalidad.
Tabla A: Comparación de sintaxis Sintaxis antigua Sintaxis nueva Descripción Evento de carga de formulario, evento de inicialización de clase Procedimiento Sub New Sub New se denomina método constructor y puede tener parámetros.
Propiedad Configuración de la propiedad Let La palabra clave Let ya no es válida.
Moneda Decimal En VB6, Decimal era un subtipo de Variante, pero en .NET es un tipo de datos intrínseco. .NET ya no admite el tipo de datos de moneda.
El tipo de datos de objeto Variant Object tiene la funcionalidad de los tipos de objeto VB6 y los tipos Variant.
Debug.Print, Debug.Write, Debug.WriteLine Esto es sólo un simple cambio de nombre: de Print a Write y WriteLine. Wend End While Se recomienda utilizar While Loop en lugar de Do Loop.
Para que los tipos de datos de VB sean compatibles con los tipos de datos de otros lenguajes NET, Microsoft modificó la representación de los tipos de datos de tipo entero y agregó un nuevo tipo de datos. Estas modificaciones son particularmente importantes para los métodos que realizan llamadas externas, como las llamadas API. Por ejemplo, si la función llamada acepta un parámetro entero de 32 bits, entonces en VB6 debe declararse como Largo, y en
Tabla B: Longitud y primeros nombres de tipos de datos relacionados con enteros en VB6 16 -bit entero corto 32 bits largo entero 64 bits (ninguno) largo
En VB6, Microsoft ha reducido muchas de las palabras clave utilizadas en VB6 y las reemplazó con "clases de marco". La razón de esto es que la funcionalidad de las clases de framework está disponible en todos los .NET Framework. La siguiente tabla enumera algunas de las palabras clave afectadas.
Tabla C: DrawLine
Atn System.Math Atan
Sgn System.Math Sign
Sqr System.Math Sqrt
Rnd Microsoft.VisualBasic.VB6 Rnd
Sqr System.Math Sqrt
Sqr System.Math Sqrt
Rndp>DoEvents System.Winforms.Application DoEvents
VarType System.Object GetType (devuelve el valor de System.Object GetType) Object GetType (devuelve un objeto de clase Type que contiene propiedades de las cuales se puede extraer información)
In Compatibilidad con VB6
Los métodos utilizados para declarar e inicializar variables y matrices han cambiado y la siguiente tabla resume estos cambios.
Tabla D: Nuevos métodos de declaración
Ejemplo de cambio de sintaxis
No se pueden declarar varios tipos en una sola declaración de declaración.
¡La siguiente declaración no está permitida!
Dim nCount As Integer, bAnswer As Boolean
Al declarar una variable, puede asignar un valor inicial Dim nCount As Integer = 20
Dim nDoubleCount As Integer = nCount * 2
¡Permitir! Especifique el valor inicial del elemento de la matriz Dim nIndex(3) As Integer = (3, 5, 7)
No puede usar la declaración Redim, solo puede usar Redim para redefinir el tamaño de la matriz. ¡La siguiente línea de código es ilegal!
Redim sName() As String
Varias palabras clave nuevas implementan una nueva funcionalidad. A continuación se muestran breves ejemplos de algunas de las palabras clave más importantes y su propósito y uso.
Tabla E: Nuevas palabras clave
Ejemplo simple de uso de palabras clave
La herencia apunta a la clase base, utilizada para implementar la herencia. Hereda System.WinForms.Form
MyBase En el código de subclase, MyBase hace referencia a la clase base. StringProperty = MyBase.StringProperty
Compartido Compartido significa que todas las instancias de la clase comparten las variables dentro de la clase. Ubicación base compartida pública como cadena
Intentar
Catch
Finalmente
Lanzar Esta es la nueva palabra clave de manejo de errores. try inicia un bloque de código para implementar el control de errores, catch identifica un bloque de código para manejar un error específico y finalmente inicia un bloque de código para manejar un error específico. Catch identifica un bloque de código que maneja un error específico, finalmente inicia un bloque de código que debe ejecutarse independientemente de si ocurre un error y Throw arroja un error (similar a Err de VB6). Actualizar
Captura
LogError ("¡Error en la actualización!")
Finalmente
rsRecordset.MoveNext
Fin Pruebe
ReadOnly En una declaración de propiedad, ReadOnly significa una propiedad de solo lectura (obteniendo solo propiedades de procedimiento). Propiedad pública ReadOnly
StringProperty() As String
WriteOnly En una declaración de propiedad, WriteOnly significa una propiedad de solo escritura (solo establece propiedades del procedimiento almacenado). Propiedad pública WriteOnly
StringProperty() As String
Char Este es un tipo de datos de un solo carácter. Dim chrInitial As Char
Importa Importa la clase especificada al módulo de código actual. Imports System.WinForms
Namespace especifica el espacio de nombres del módulo. Espacio de nombres MyApplicationName
Sobrecargas Sobrecargas. La sobrecarga significa que hay múltiples versiones de implementación del mismo nombre de función y el compilador las distingue a través de la lista de parámetros de la función. Se incluyen varias declaraciones en el mismo módulo de la siguiente manera...
Sobrecargas Sub Display(sIn como cadena)
Sobrecargas Sub Display(nIn as Long)
Anulaciones Anulaciones. Anular significa que la función miembro anula el método especificado en la clase base que hereda la clase actual.
Hereda MyBaseClass
Anula el nombre de la función (nID como largo) _
Como cadena
Anulable significa que cualquier clase que herede de la clase actual se puede anular. función miembro. Nombre de función reemplazable _
(nID as Long) As String
MustOverride MustOverride indica que cualquier clase que herede de la clase actual debe anular la función miembro especificada. MustOverride Function Name_
(nID As Long) As String
Protegido Protegido significa que solo las clases derivadas de la clase actual pueden acceder a la función miembro. Protected Sub Clear()
En versiones anteriores de VB (hasta VB 4), los procedimientos de propiedad Let, Set y Get estaban separados. Los procedimientos de propiedad para la misma propiedad se reúnen:
Privado msMyStringProperty As String
' Área de declaración
Propiedad pública MyStringProperty As String
Get
MyStringProperty = msMyStringProperty
Fin de Get
Set
msMyStringProperty = MyStringProperty
Fin del conjunto
Propiedad final
Ya no existe un procedimiento de propiedad Let porque la sintaxis para todas las declaraciones de asignación (ya sean de objeto o no) es la misma.
Los cambios en el lenguaje son mucho mayores que los cambios en la arquitectura. Para la mayoría de las personas, estos cambios tienen sentido, pero algunas personas aún no están de acuerdo con algunos de ellos. Por ejemplo, en versiones anteriores, muchas tareas se podían realizar de muchas maneras diferentes y los estándares de codificación unificados no existían o eran difíciles de aplicar. En un esfuerzo por "limpiar" el lenguaje VB, Microsoft realizó algunos cambios importantes en VB para que muchas tareas que podían realizarse de múltiples maneras ahora solo puedan realizarse de una manera.
Además de lo que se enumera en la tabla anterior, hay algunas cosas a tener en cuenta aquí.
Primero, la forma predeterminada de pasar datos a los parámetros del procedimiento almacenado ha cambiado de pasar por referencia (ByRef) a pasar por valor (ByVal). Este es un cambio importante. Pasar parámetros por referencia conlleva un peligro mayor que pasar parámetros por valor, y es que el procedimiento almacenado llamado puede cambiar inadvertidamente el valor del parámetro. Todavía se permite pasar parámetros por referencia, pero el cambio en el método de paso de parámetros predeterminado significa que los programas deben ajustarse en consecuencia.
En segundo lugar, ya no hay declaraciones Set; asignar una referencia de objeto a una variable ahora solo requiere un signo igual y el objeto puede tratarse como cualquier otro valor. Omitir la instrucción Set simplifica el código, pero también tiene un efecto secundario: las propiedades predeterminadas ya no son válidas. Por ejemplo, la siguiente forma de hacer referencia a un valor de propiedad ya no es legal:
Texto1 = "Este es el valor de propiedad predeterminado del objeto".
En su lugar, se debe hacer referencia explícita al valor de la propiedad de la siguiente manera:
Text1.Text = "Este es el valor de propiedad predeterminado del objeto".
A primera vista, este requisito puede parecer innecesario. Pero, de hecho, es necesario deshacerse de las propiedades predeterminadas. Por ejemplo, supongamos que tiene una variable de objeto llamada objFoo.
Sin la declaración Set, suponiendo que aún se pueda hacer referencia al valor del atributo como antes, es difícil determinar el significado de la siguiente declaración:
objFoo = Text1
Esta declaración establece el valor de Referencia Texto1, ¿el valor del atributo Texto está asignado a objFoo, o el valor del atributo Texto está asignado a objFoo? No podemos decirlo, ni tampoco el compilador. Por lo tanto, abandonar la declaración Set también significa que se debe abandonar el valor de propiedad predeterminado.
El cambio menos favorito en .NET: Microsoft cambió el significado de algunos tipos de datos de larga data. En .NET, Integer pasó a ser de 32 bits y Long pasó a ser de 64 bits. Como puede imaginar, este cambio hará que los programadores utilicen a menudo tipos de variables incorrectos.
Se introdujo la palabra clave Option Strict. La palabra clave Option Strict reemplaza a Option Explicit. Si bien el VB original permitía asignar valores numéricos a variables de cadena o realizar otras asignaciones igualmente inusuales, Option Strict puso fin a esta práctica. La declaración Option Strict le dice a Visual que no realice ninguna conversión. Por supuesto, esto no es una restricción completa a la conversión automática de tipos: permite la conversión automática de tipos hacia abajo (Cast), pero no admite la conversión automática de tipos hacia arriba. Por ejemplo, no puede establecer una variable declarada como única en el valor de una variable doble sin una conversión de tipo explícita utilizando una declaración como "sngvariable = CSng(dblvariable)" porque, sin embargo, hacerlo puede provocar una pérdida de datos si declara A; una variable que es Single no se puede establecer en el valor de una variable Double porque hacerlo puede provocar la pérdida de datos; sin embargo, si no utiliza una conversión de tipo explícita, puede establecer directamente una variable Double en el valor de una variable Single; hacerlo no provocará la pérdida de datos. El uso de Option Strict puede ayudar a los desarrolladores a reducir muchos errores, incluidos muchos que son difíciles de depurar. Nota al margen: ya no se permite el enlace diferido cuando se utiliza la opción estricta.