Red de conocimiento informático - Problemas con los teléfonos móviles - Aprendizaje de los conceptos básicos de sintaxis de VB.NET

Aprendizaje de los conceptos básicos de sintaxis de VB.NET

Algunos han ridiculizado durante mucho tiempo a VB debido a su falta de soporte completo orientado a objetos, falta de mecanismos efectivos de manejo de errores y bajo rendimiento. Esta situación cambiará por completo. Sin embargo, estas mejoras tienen un costo, ya que gran parte del código heredado requiere conversión manual para ejecutarse de forma interna.

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.