Visual Basic 2008
Visual Basic 2008
Acerca del
Autor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Acerca del Revisor
Técnico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Agradecimientos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . xx
Introducción y bienvenida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . xxi
PARTE 1 nnn Introducción a Visual Basic 2008 y el
. NET
nCHAPTER 1 La filosofía de. NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
nCHAPTER 2 Edificio de Visual Basic 2008 aplicaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
PARTE 2 n n n la base de programación VB Construye
nCHAPTER tres construcciones de programación VB 2008, primera parte. . . . . . . . . . . . . . . . . . . . . .
. . . . . . 65
nCHAPTER cuatro construcciones de programación VB 2008, Parte II. . . . . . . . . . . . . . . . . . . . . . . . .
. . 103
nCHAPTER 5 Diseño de encapsulado de clase Tipos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
nCHAPTER 6 Entendimiento Herencia y polimorfismo. . . . . . . . . . . . . . . . . . . . . . 173
nCHAPTER 7 Entendimiento estructurado de excepciones. . . . . . . . . . . . . . . . . . . . . . 207
nCHAPTER 8 Descripción de objetos de por vida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
PARTE 3 n n n avanzada de programación VB Construye
nCHAPTER 9 Trabajar con tipos de interfaz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
nCHAPTER 10 colecciones, genéricos y tipos de datos que aceptan valores NULL. . . . . . . . . . . . . . .
. . . . . . 291
nCHAPTER 11 delegados, eventos y expresiones
lambda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
nCHAPTER 12 sobrecarga de operadores y rutinas de conversión personalizados. . . . . . . . . . . . .
359
nCHAPTER 13 VB 2008-Características del lenguaje
específico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
nCHAPTER 14 Una introducción a LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Acerca del
Autor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Acerca del Revisor
Técnico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Agradecimientos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . xx
Introducción y bienvenida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . xxi
PARTE 1 n n n Introducción a Visual Basic 2008 y
la Plataforma. NET
nCHAPTER 1 La filosofía de. NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Entender la situación anterior. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
La solución. NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Introducción a los bloques de construcción de la plataforma. NET
(CLR, CTS, y CLS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Lo que Visual Basic 2008 trae a la mesa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Adicional. NET-Aware lenguajes de programación. . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Una visión general de. NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Comprender el sistema de tipos común. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Comprender la especificación Common Language. . . . . . . . . . . . . . . . . . . . . . 19
Comprender el Common Language Runtime. . . . . . . . . . . . . . . . . . . . . . . . . . 21
La Asamblea / Espacio de nombres / Distinción tipo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Usando [Link]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Uso de Reflector de Lutz Roeder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Implementar el tiempo de ejecución. NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
La naturaleza independiente de la plataforma. NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
nCHAPTER 2 Edificio de Visual Basic 2008 aplicaciones. . . . . . . . . . . . . . . . . . . . . 35
El papel del. NET Framework 3.5 SDK. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
La VB 2008 la línea de comandos del compilador ([Link]). . . . . . . . . . . . . . . . . . . . . . . . . . 36
La construcción de aplicaciones con Visual Basic 2008 [Link]. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
Trabajar con archivos de respuesta de [Link]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Edificio. NET Usando SharpDevelop. . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Edificio. NET utilizando Visual Basic 2008 Express. . . . . . . . . . . . . . . . 46
vi
El problema obvio primera es que C es un lenguaje muy conciso. los desarrolladores de C se ven
obligados a enfrentarse
con la administración manual de memoria, aritmética de punteros complejo, y lo feo construcciones
sintácticas.
Además, dado que C es un lenguaje de procedimiento, carece de los beneficios proporcionados por
el orientado a objetos
enfoque. Cuando se combinan los miles de funciones globales y tipos de datos definidos por el
la API de Windows a una lengua ya formidable, no es de extrañar que no son tan numerosos buggy
aplicaciones flotando en la actualidad.
La vida como un C + + / MFC Programador
Una gran mejora con respecto primas C / API de desarrollo es el uso de C + + lenguaje de
programación.
En muchos sentidos, C + + puede ser considerado como una capa orientada a objetos en la parte
superior de C. Por lo tanto, a pesar de que
C + + beneficio de los programadores de la famosa "pilares de la programación orientada a objetos"
(encapsulación, herencia y polimorfismo),
todavía están a merced de los aspectos dolorosos de la lengua C (por ejemplo, la memoria manual
gestión, la aritmética de punteros complejo, y las construcciones sintácticas fea).
A pesar de su complejidad, C + + muchos marcos existen en la actualidad. Por ejemplo, el Microsoft
Foundation
Clases (MFC) proporciona al programador un conjunto de clases C + + que simplifica la
construcción
de las aplicaciones de Windows. La principal función de MFC es envolver un "subconjunto sana" de
la materia prima de la API de Windows
detrás de un número de clases y numerosas herramientas de generación de código (también
conocido como magos). Independientemente de la
ayuda ayuda que ofrece el marco de trabajo MFC (así como muchos otros C + + basado en
herramientas), el
hecho del asunto es que C + + sigue siendo una experiencia difícil y propenso a errores, debido a su
raíces históricas en C.
La vida como una aplicación de Visual Basic 6.0 del programador
Debido a un sincero deseo de disfrutar de un estilo de vida más simples, muchos programadores
evitarse el mundo de C (++)-
marcos basada por completo en favor de la más amable, más suave lenguajes como Visual Basic
6.0 (VB6).
VB6 es muy popular debido a su capacidad de crear sofisticadas interfaces gráficas de usuario
(GUI), código
bibliotecas (por ejemplo, servidores de ActiveX), y la lógica de acceso a datos con un mínimo de
alboroto y molestias. Mucho más
de MFC, VB6 oculta la complejidad de la materia prima de la API de Windows de la vista utilizando
una serie de servicios integrados
asistentes de programación, tipos de datos intrínsecos, clases y funciones específicas de VB6.
La principal limitación de VB6 (que ha sido rectificada, dada la aparición de la plataforma. NET) es
que no es un lenguaje totalmente orientado a objetos, sino que es ". objeto de conocimiento" Por
ejemplo, VB6 no
permiten al programador establecer "es-un" relaciones entre los tipos (es decir, sin la herencia
clásica)
y no tiene apoyo intrínseco a la construcción de clase con parámetros. Por otra parte, VB6 no
proporciona
la capacidad de crear aplicaciones multiproceso a menos que esté dispuesto a bajar a bajo nivel
Llamadas API de Windows (que es el mejor de los complejos y peligrosos en el peor).
Vida Como un Programador Java/J2EE
Introduzca Java. Java es un lenguaje de programación orientado a objetos que tiene sus raíces
sintácticos en C + +. Como
muchos de ustedes saben, los puntos fuertes de Java son mucho mayores que su apoyo a la
independencia de la plataforma.
Java (como lengua) se limpia muchos aspectos desagradables sintácticas de C + +. Java (como
plataforma) proporciona
programadores con un gran número predefinido de "paquetes" que contienen varios tipos
definiciones. El uso de estos tipos, los programadores de Java pueden construir "100% puro de
Java" aplicaciones
completa con la conectividad de base de datos, soporte de mensajería, web-enabled interfaces, y un
escritorio ricos
interfaz de usuario (UI).
Aunque Java es un lenguaje muy elegante, un problema potencial es que el uso de Java
normalmente
significa que usted debe usar Java front-to-back "durante el ciclo de desarrollo. En efecto, Java
ofrece poco
esperanza de la integración del lenguaje, ya que esto va en contra del objetivo principal de Java (un
único de programación
idioma para todas las necesidades). En realidad, sin embargo, hay millones de líneas de código
existente a cabo
hay en el mundo que lo ideal sería que se mezclan con los nuevos código Java. Lamentablemente,
Java hace que esta
tarea problemática.
Pura de Java a menudo no es apropiado para muchas aplicaciones de forma gráfica o numérica
intensiva
(En estos casos, es posible que la velocidad de ejecución de Java deja mucho que desear). Una
mejor
enfoque de este tipo de programas sería utilizar un lenguaje de bajo nivel (como C + +) en su caso.
Una vez más, mientras que Java proporciona una capacidad limitada a un acceso no-Java API, hay
poco apoyo
para una verdadera integración entre lenguajes.
Vida Como programador COM
El Modelo de objetos componentes (COM) fue el primer intento de Microsoft en un marco unificado
de componentes.
COM es una arquitectura que dice en efecto: "Si usted construye sus clases de acuerdo con la
reglas del COM, se termina con un bloque de código binario reutilizables ".
La belleza de una versión binaria del servidor COM es que se puede acceder de forma
independiente del lenguaje.
Así, los programadores de VB6 puede construir clases COM que puede ser utilizada por C + +.
Delphi
los programadores pueden utilizar las clases COM construido usando C, y así sucesivamente. Sin
embargo, como es de su conocimiento,
COM independencia del lenguaje es algo limitado. Por ejemplo, no hay manera de obtener un nuevo
COM clase mediante una clase COM existentes (como COM no tiene soporte para la herencia
clásica).
Otro de los beneficios del COM es su naturaleza ubicación transparente. Uso de construcciones
tales como la aplicación
identificadores (AppID), talones, proxies, y el entorno de ejecución de COM, los programadores
pueden
evitar la necesidad de trabajar con sockets, manual de llamadas a procedimiento remoto, y otros de
bajo nivel
detalles. Por ejemplo, considere lo siguiente VB6 código de cliente COM:
"El tipo MyComClass se puede escribir en
"Cualquier idioma COM-consciente, y puede ser ubicado en cualquier lugar
'En la red (incluyendo el equipo local).
Dim myObj Como MyComClass
Establecer myObj = Nueva MyComClass 'Localización resuelven utilizando AppID.
[Link]
A pesar de COM puede ser considerado como un modelo de objetos de gran éxito, es muy complejo
bajo el capó. Para ayudar a simplificar el desarrollo de los binarios COM, numerosos COM-
consciente
marcos han venido a la existencia (sobre todo VB6). Sin embargo, el marco de apoyo solo
no es suficiente para ocultar la complejidad del COM. Incluso cuando se elige una manera
relativamente simple COMaware
lenguaje como Visual Basic 6, que todavía se ven obligados a lidiar con las entradas de registro y
frágiles
numerosas cuestiones relacionadas con la implementación (en adelante denominado el infierno
DLL).
Vida Como un Programador de ADN de Windows
Para complicar más las cosas, hay una pequeña cosa llamada Internet. En los últimos años,
Microsoft ha estado agregando más características tanto de Internet-en su familia de sistemas
operativos y
los productos. Lamentablemente, la creación de una aplicación web mediante COM distribuido
basado en Windows Aplicaciones de Internet
Arquitectura (DNA) es también muy compleja.
Parte de esta complejidad se debe al simple hecho de que Windows DNA requiere el uso de
numerosas
tecnologías y lenguajes (ASP, HTML, XML, JavaScript, VBScript, COM (+), así como los datos de
un
acceso a la API como ADO). Un problema es que muchas de estas tecnologías no tienen ninguna
relación
desde el punto de vista sintáctico. Por ejemplo, JavaScript tiene una sintaxis muy similar a C,
mientras que VBScript es un
subconjunto de Visual Basic 6. Los servidores COM que se crean para ejecutar en el marco del
COM + en tiempo de ejecución tienen un completo
diferentes apariencia de las páginas ASP que los invoca. El resultado es una muy confusa
mezcolanza
de las tecnologías.
Además, y quizás más importante, cada lengua y / o tecnología tiene su propio tipo
sistema (que puede parecer nada que ver con el tipo de sistema de otra persona). Más allá del
hecho de que cada API de buques con
su propia colección de código prefabricadas, tipos de datos más básicos no siempre se puede tratar
de forma idéntica.
Un BSTR en C + + no es lo mismo que una cadena en Visual Basic 6, los cuales tienen muy poco
que ver con una
Char * en C.
La solución. NET
Hasta aquí la breve lección de historia. La conclusión es que la vida como programador de Windows
ha sido
menos que perfecto. . NET Framework es un enfoque más radical y de fuerza bruta a la
racionalización
el proceso de desarrollo de aplicaciones. La solución propuesta por. NET es "Cambiar todo" (lo
siento,
no se puede culpar al mensajero por el mensaje). Como se puede ver durante el resto de este libro,
. NET Framework es un modelo completamente nuevo para la construcción de sistemas de la
familia de Windows
sistemas operativos, así como en numerosos sistemas operativos que no sean de Microsoft, tales
como Mac OS X y
varios Unix / Linux. Para establecer el escenario, aquí es un rápido resumen de algunas de las
características fundamentales
cortesía de NET.:
• interoperabilidad completa con código existente: Esto es (por supuesto) una buena cosa. ActiveX
componentes pueden mezclar (es decir, de interoperabilidad) con las nuevas aplicaciones. NET y
viceversa.
Además, los servicios de invocación de plataforma (PInvoke) le permite llamar a bibliotecas de C-
base (incluyendo
el API subyacente del sistema operativo) de código. NET.
• Integración entre lenguajes de programación NET.. NET soporta la herencia entre lenguajes,
error entre lenguajes, manipulación y depuración entre lenguajes de código.
• Un motor de ejecución común compartida por todos NET-consciente. Uno de los aspectos de este
motor es un
tipo bien definido sistema de que cada lengua. NET-consciente "entiende".
• Una biblioteca de clases base amplia: Esta biblioteca proporciona refugio de la complejidad de las
materias primas
Llamadas a la API de Windows y ofrece un modelo de objetos compatible utilizado por todos los
idiomas. NET-consciente.
• No más de plomería COM: Legacy interfaces COM (como IUnknown e IDispatch), COM
bibliotecas de tipos, y el tipo de variante COM centrada en los datos no tienen cabida en un nativo.
NET binario.
• Un modelo de implementación verdaderamente simplificado. Bajo NET, no hay necesidad de
registrar una unidad binaria
en el registro del sistema. Por otra parte,. NET permite que múltiples versiones de la misma *. dll
para
conviven en armonía en una sola máquina.
Como se puede más probable es que se reúnen a partir de las viñetas anteriores, la plataforma.
NET no tiene nada que
ver con COM (más allá del hecho de que tanto los marcos de origen de Microsoft). De hecho, el
único
manera. NET y COM tipos pueden interactuar unos con otros está utilizando la capa de
interoperabilidad.
nNota cobertura de la capa de interoperabilidad. NET se puede encontrar en el capítulo 19.
Introducción a los bloques de construcción del. NET
Plataforma (CLR, CTS, y CLS)
Ahora que usted sabe algunos de los beneficios proporcionados por. NET, vamos a ver tres
principales (y sí)
entidades que lo hacen posible: el CLR, CTS, y CLS. Desde el punto de vista del programador,.
NET
puede ser entendida como un entorno de ejecución y una nueva biblioteca de clases base amplia. El
tiempo de ejecución
capa se refiere correctamente como el Common Language Runtime o CLR. La función principal de
la
CLR es localizar, cargar y administrar. Tipos de redes en su nombre. El CLR también se ocupa de
un número
de los detalles de bajo nivel como la gestión de la memoria, la carga de bibliotecas externas, y la
seguridad de realizar
cheques.
Otro bloque de construcción de la red. Platformis el sistema de tipos común, o CTS. El CTS
especificación describe completamente el sistema de tipos de base y construcciones de
programación con el apoyo de el tiempo de ejecución, especifica cómo estas entidades pueden
interactuar entre sí, y los detalles de cómo se representan
en el formato de metadatos. NET (más información sobre metadatos más adelante en este capítulo).
Entender que un hecho. NET consciente de no ser compatible con todos y cada función
definido por el CTS. El Common Language Specification (CLS) es una especificación relacionados
que
define un subconjunto de tipos comunes y construcciones de programación que todos. NET
lenguajes de programación
puede estar de acuerdo. Por lo tanto, si usted construye. Tipos NET que sólo exponen las
características compatibles con CLS, que
puede estar seguro de todo eso. NET-consciente puede consumir. Por el contrario, si usted hace
uso de un
tipo de datos o construcción de programación que está fuera de los límites de la ETI, no se puede
garantizar
que todos los idiomas de programación. NET puede interactuar con el. colección NET.
El papel de las bibliotecas de clases base
Además del CLR y CTS y especificaciones CLS, la plataforma. NET proporciona una biblioteca de
clases base
que está disponible para todos los lenguajes de programación. NET. No sólo la biblioteca de clases
base de encapsular
primitivas diversos, tales como las discusiones, el archivo de entrada / salida (E / S), la
representación gráfica, y la interacción
con varios dispositivos de hardware externo, sino que también proporciona soporte para una serie
de servicios
requerido por la mayoría de aplicaciones del mundo real.
Por ejemplo, las bibliotecas de clases base que definen tipos de facilitar el acceso de base de datos,
documento XML
la manipulación, la seguridad programática, y la construcción de la web habilitada (así como
tradicionales de escritorio y la consola basada en) frente a los extremos. Desde un alto nivel, se
puede visualizar la relación
entre el CLR, CTS, CLS, y la biblioteca de clases base, como se muestra en la Figura 1.1.
Figura 1-1. La clase CLR, CTS, CLS, y la base de la colección de la relación
Lo que Visual Basic 2008 trae a la mesa
Debido a que. NET es un cambio radical de anteriores tecnologías de Microsoft, debe quedar claro
que las lenguas legado basado en COM, como Visual Basic 6 no puede integrar directamente con la
plataforma. NET.
Teniendo en cuenta este hecho, Microsoft introdujo un lenguaje de programación nuevo, Visual
Basic. NET
(VB. NET), con el lanzamiento de. NET 1.0. Como desarrolladores aprendieron rápidamente, a
pesar de VB. NET tenía una similar
apariencia de VB6, introdujo un gran número de nuevas palabras clave y las construcciones que
muchos programadores (incluyéndome a mí) con el tiempo considerado VB. NET como un nuevo
miembro de la BASE
de la familia en lugar de "Visual Basic 7.0."
Por ejemplo, a diferencia de VB6, VB. NET proporciona a los desarrolladores un idioma en toda
regla orientada a objetos
que es tan poderoso como lenguajes como C + +, Java o C #. Por ejemplo, utilizando Visual Basic.
NET,
los desarrolladores pueden crear aplicaciones multiproceso de escritorio, páginas web y servicios
web XML;
definir personalizado subrutinas de construcción de clase, los miembros de la sobrecarga, y definir
las funciones de devolución de llamada
(A través de delegados). En pocas palabras, aquí están algunas de las principales características
proporcionadas por cortesía de VB. NET:
• Soporte completo de la herencia clásica y el polimorfismo clásica.
• establecimiento inflexible de tipos palabras clave para definir clases, estructuras, enumeraciones,
delegados e interfaces.
Teniendo en cuenta estas nuevas palabras clave, código de Visual Basic. NET es siempre
contenida dentro de un archivo *. vb (en
contraste con el VB6 centrada *. cls, *. bas y *. frm).
• Soporte completo para las técnicas de programación basadas en la interfaz.
• Soporte completo para la programación basada en atributos. Esta marca de desarrollo que permite
tipos de anotar y sus miembros para calificar aún más su comportamiento (más detalles en
Capítulo 16).
Con el lanzamiento de. NET 2.0, la VB. NET lenguaje de programación se conoce como Visual
Basic 2005 (VB 2005). Mientras VB 2005 es totalmente compatible con Visual Basic. NET, agregó
numerosas
nuevas campanas y silbatos adicionales, la mayoría de notabilidad lo siguiente:
• La capacidad de redefinir cómo los operadores intrínsecos de la lengua (como el símbolo +) puede
ser
interpretada por las clases personalizadas o estructuras. Formalmente, esta característica se
denomina
la sobrecarga de operadores.
• La introducción del espacio de nombres My. Este espacio de nombres proporciona acceso
instantáneo a machineand
información específica del proyecto (que reduce en gran medida la cantidad de código que necesita
para
autor de forma manual).
• La capacidad de construir los tipos genéricos y los miembros de genéricos. Uso de medicamentos
genéricos, que son capaces de construir
código muy eficiente y con seguridad de tipos que define numerosos "marcadores" que se
especifican en el momento
que interactúan con el tema genérico.
• La capacidad de personalizar el proceso de registrar, anular el registro o envío de eventos
utilizando el
Personalizada de palabras clave.
• Apoyo a la firma tipos de datos (SByte, ULong, etc.)
• La capacidad de definir un tipo único a través de múltiples archivos de código utilizando la palabra
clave Partial.
Como puede imaginar,. NET 3.5 añade aún más funcionalidad a la programación de Visual Basic
idioma (ahora oficialmente llamado Visual Basic 2008), incluyendo las características básicas
siguientes:
• Apoyo a la inflexible instrucciones de consulta (a la LINQ Language Integrated Query), que
puede interactuar con una variedad de almacenes de datos (bases de datos, documentos XML,
objetos de colección)
• Soporte para los tipos anónimos, que permiten rápidamente modelo de la "forma" de un tipo más
bien
de su comportamiento
• La capacidad de extender la funcionalidad de un tipo compilado utilizando métodos de extensión
• Apoyo a las expresiones lambda, que simplifican en gran medida la forma en que puede trabajar.
Delegar NET
tipos
• Una sintaxis de inicialización de objetos nuevos, que le permite establecer valores de propiedad en
el momento de
creación de objetos
Tal vez el punto más importante para entender acerca de Visual Basic 2008 es que sólo puede
producir código que puede ejecutar en el tiempo de ejecución. NET (por lo tanto, nunca podría usar
VB 2008 para
construir un nativo de ActiveX del servidor COM). Oficialmente, el término utilizado para describir el
código de selección
el tiempo de ejecución. NET es código administrado. La unidad binario que contiene el código
administrado se denomina
conjunto (más detalles en las asambleas en tan sólo un poco). Por el contrario, el código que no
puede ser alojado directamente
el tiempo de ejecución. NET que se denomina código no administrado.
Adicional. NET-Aware lenguajes de programación
Entender que Visual Basic 2008 no es el único lenguaje que puede ser usado para construir
aplicaciones. NET.
Cuando la plataforma. NET fue revelado por primera vez al público en general durante el 2000
Microsoft
Conferencia de Desarrolladores Profesionales (PDC), varios proveedores anunciaron que estaban
ocupados construyendo
. versiones de NET-conscientes de sus compiladores respectivos.
En el momento de escribir estas líneas, decenas de lenguas diferentes se han sometido. NET
iluminación.
Además de los cinco idiomas que se incluyen con Visual Studio 2008 (Visual Basic 2008, C #, J #, C
+ + / CLI,
y JScript. NET), los hay. NET compiladores para Smalltalk, COBOL y Pascal (por nombrar algunos).
Aunque este libro se centra (casi) exclusivamente en Visual Basic 2008, tenga en cuenta lo
siguiente
sitio web (por favor, tenga en cuenta que esta dirección URL está sujeto a cambios):
[Link]
Una vez que haya navegado a esta página, haga clic en el enlace situado en Recursos superior de
la página
menú del sistema. Aquí encontrará una lista de numerosas. lenguajes de programación NET y
enlaces de interés
donde se pueden descargar diversos compiladores (ver Figura 1-2).
Figura 1-2. . NET es uno de los muchos sitios que documentan conocidos. lenguajes de
programación NET
Aunque supongo que son los principales interesados en la construcción. Programas NET utilizando
la sintaxis de
VB 2008, le animo a visitar este sitio, usted está seguro de encontrar. NET vale la pena investigar
en su tiempo libre (LISP. NET, cualquier persona?).
La vida en un mundo multilingüe
Como desarrolladores primero en llegar a comprender la naturaleza independiente del idioma de.
NET, numerosas preguntas
surgir. El más frecuente de estas preguntas tendría que ser: "Si todos. NET compilar abajo
con "el código administrado," ¿por qué necesitamos más de un compilador? "Hay un número de
maneras de
responder a esta pregunta. En primer lugar, los programadores son mucho muy particular cuando se
trata de nuestra elección
del lenguaje de programación (me incluyo). Algunos prefieren idiomas llena de puntos y comas y
rizado
corchetes, con la mayor número posible de palabras clave (como C #, C + + y J #). Otros disfrutan
de un lenguaje que
ofrece más "legible" la sintaxis (como Visual Basic 2008). Y otros lo desea, puede aprovechar
sus habilidades mainframe mientras se mueve a la plataforma. NET (a través de COBOL. NET).
Ahora, sea honesto. Si Microsoft fuera a construir un sencillo "oficial". NET que se deriva
de la familia de los lenguajes C, se puede decir que realmente todos los programadores estaría feliz
con este
elección? O, si la única "oficial". NET se basa en la sintaxis de Fortran, imagina toda la gente
por ahí que pasaría por alto. NET por completo. Debido a que el tiempo de ejecución. NET no
podría importarme menos que
el lenguaje se utiliza para construir una asamblea. programadores NET puede permanecer fiel a sus
preferencias sintácticas,
y compartir el código compilado entre los compañeros de equipo, departamentos y organizaciones
externas
(Independientemente de que. Otras NET optar por el uso).
Otro subproducto de la excelente integración de varios. NET en un software unificado
solución es el simple hecho de que todos los lenguajes de programación tienen su propio conjunto
de fortalezas
y debilidades. Por ejemplo, algunos lenguajes de programación ofrecen un excelente soporte
intrínseco para
tratamiento matemático avanzado. Otros ofrecen un rendimiento superior para cálculos financieros,
lógica
cálculos, la interacción con los ordenadores centrales, y así sucesivamente. Cuando usted toma los
puntos fuertes de un
lenguaje de programación en particular y luego incorporar los beneficios proporcionados por la
plataforma. NET,
todo el mundo gana.
Por supuesto, en realidad las posibilidades son bastante buenas que usted pasará la mayor parte de
su tiempo de construcción
software usando el archivo. NET de su elección. Sin embargo, una vez que aprender la sintaxis de
uno. NET,
es muy fácil de dominar a otro. Esto también es muy beneficioso, sobre todo a los consultores de
el mundo. Si el idioma de su elección pasa a ser Visual Basic 2008, pero se colocan en un cliente
sitio que se ha comprometido a C #, que todavía son capaces de aprovechar la funcionalidad de.
NET Framework,
y usted debería ser capaz de entender la estructura general de la base de código con un mínimo
esfuerzo y
molesta. No digo más.
Una visión general de. NET
A pesar de que. Binarios NET tomar la misma extensión de archivo como servidores COM y no
administrado
Los binarios de Windows (*. dll o *. exe), no tienen absolutamente ninguna similitud interna. Por
ejemplo,. NET
asambleas no se describen el uso de bibliotecas COM tipo y no están registrados en el registro del
sistema.
Quizás lo más importante. NET binarios no contienen instrucciones específicas de la plataforma,
pero
en lugar de lenguaje intermedio independiente de la plataforma (IL), así como tipo de metadatos.
Figura 1-3 muestra el
panorama de la historia hasta el momento
nNota Hay un punto que se hizo en relación con la abreviatura "IL." Durante el desarrollo de. NET, el
funcionario
plazo para la IL fue el lenguaje intermedio de Microsoft (MSIL). Sin embargo, con la versión final de.
NET 1.0, el término se
cambió el lenguaje común intermedio (CIL). Por lo tanto, al leer la literatura. NET, entender que la
IL, MSIL,
y del CIL están describiendo la entidad exactamente la misma. De acuerdo con la terminología
actual, voy a utilizar la abreviatura
CIL lo largo de este texto.
Cuando un *. dll o *. exe ha sido creado con un compilador. NET-aware, el módulo resultante es
incluido en un ensamblado. Usted examinará numerosos detalles de. NET en el capítulo 15.
Sin embargo, para facilitar el debate sobre el entorno de ejecución. NET, es necesario entender
algunas propiedades básicas de este nuevo formato de archivo.
Como se mencionó, un ensamblado contiene código CIL, que es conceptualmente similar al
bytecode de Java
en que no se compila con las instrucciones específicas de la plataforma hasta que sea
absolutamente necesario. Por lo general,
"Absolutamente necesario" es el punto en el que un bloque de instrucciones del CIL (tales como una
implementación de método)
se hace referencia para su uso por el tiempo de ejecución. NET.
Además de las instrucciones del CIL, las asambleas también contienen metadatos que describen
con gran detalle
las características de cada "tipo" que viven en el binario. Por ejemplo, si usted tiene una clase
denominada
Sportscar, el tipo de metadatos describe detalles como clase base Sportscar, que las interfaces son
implementado por Sportscar (si procede), así como una descripción completa de cada miembro con
el apoyo de la
tipo Sportscar.
. Metadatos NET es una mejora dramática en los metadatos de tipos COM. Como usted ya sabe,
binarios COM suelen ser descritos mediante una biblioteca de tipos asociados (que es poco más
que una
versión binaria de la interfaz de lenguaje de definición de código [IDL]). Los problemas con la
información de tipo COM
es que no se garantiza la presencia y el hecho de que el código IDL no tiene forma de documento
los servidores de referencia externa que se requieren para el correcto funcionamiento de la actual
OCM
servidor. Por el contrario,. Metadatos NET está siempre presente y es generado automáticamente
por un hecho. NetAware
compilador.
Por último, además de CIL y tipo de metadatos, conjuntos de ellos también se describen con
metadatos, que es oficialmente llamado un manifiesto. El manifiesto contiene información acerca de
la actual
versión de la asamblea, información de referencia cultural (utilizado para la localización de cadenas
y recursos de imagen),
y una lista de todos los conjuntos de referencias externas que son necesarios para la correcta
ejecución. Usted examinará
diversas herramientas que pueden utilizarse para investigar los tipos de un ensamblado, metadatos,
y se manifiestan
información sobre el curso de los próximos capítulos.
' [Link]
Imports System
Namespace CalculatorExample
' Defines the program's entry point.
Module Program
Sub Main()
Dim ans As Integer
Dim c As New Calc()
ans = [Link](10, 84)
[Link]("10 + 84 is {0}.", ans)
[Link]()
End Sub
End Module
' The VB 2008 calculator.
Class Calc
Public Function Add(ByVal x As Integer, ByVal y As Integer) As Integer
Return x + y
End Function
End Class
End Namespace
Una vez que el compilador de VB 2008 ([Link]) compila este archivo de código fuente, se termina
con una sola fila
ensamblado ejecutable que contiene un manifiesto, las instrucciones de la CIL, y los metadatos que
describen cada
aspecto de los tipos de Calc y Programa.
Capítulo nNota 2 examina los detalles de la compilación de código mediante el compilador de VB.
Si se va a abrir este conjunto con la utilidad [Link] (examinado un poco más adelante en este
capítulo), se verá que el método Add () se representa mediante la CIL como las siguientes:
No se preocupe si usted no puede hacer cara o cruz del código CIL que resulta de este método.
En realidad, la gran mayoría de los desarrolladores. NET importa un bledo los detalles de la
programación del CIL
idioma. Basta con entender que el Visual Basic 2008 compilador traduce el código
estados en términos de la CIL.
Ahora bien, recordemos que esto es cierto de todos los compiladores. NET-consciente. Para ilustrar,
supongamos que ha creado este
misma aplicación usando C #, en lugar de VB 2008 (de nuevo, no sudan la sintaxis, pero tenga en
cuenta las similitudes
en las bases de código):
// [Link]
using System;
namespace CalculatorExample
{
// Defines the program's entry point.
public class Program
{
static void Main()
{
Calc c = new Calc();
int ans = [Link](10, 84);
[Link]("10 + 84 is {0}.", ans);
[Link]();
}
}
CHAPTER 1 ■ THE PHILOSOPHY OF .NET 13
// The C# calculator.
public class Calc
{
public int Add(int x, int y)
{ return x + y; }
}
}
Si examina el CIL para el método Add (), usted encontrará las instrucciones similares (ligeramente
modificado por
el compilador de C #):
máquina de back-end del servidor (donde la memoria es rara vez un problema), el jitter será
optimizado para
funcionar en un entorno de alta memoria. De esta forma, los desarrolladores pueden escribir un solo
cuerpo de código
que puede ser eficiente JIT compila y ejecuta en máquinas con arquitecturas diferentes.
Por otra parte, como un hecho la inquietud compila las instrucciones de CIL en código máquina
correspondiente,
en caché los resultados en la memoria de una manera adecuada para el sistema operativo de
destino. De esta manera, si un
llamada se realiza a un método denominado PrintDocument (), las instrucciones del CIL se compilan
en platformspecific
instrucciones que aparecen en la primera invocación y retenido en la memoria para su uso posterior.
Por lo tanto, el
la próxima vez PrintDocument () se llama, no es necesario volver a compilar el CIL.
El papel de. Metadatos Tipo NET
Además de las instrucciones del CIL, un montaje. NET contiene metadatos plena, completa y
precisa,
que describe cada uno y todo tipo (clase, estructura, enumeración, etc) se define en el
binarios, así como los miembros de cada tipo (propiedades, funciones, eventos, etc). Por suerte,
siempre es el trabajo del compilador (no el programador) para definir el tipo de metadatos últimos y
más grandes.
Porque. metadatos NET es tan perversamente meticuloso, las asambleas son totalmente auto-
descripción
entidades-tanto es así, de hecho, que. NET binarios no necesitan ser registrados en el sistema
Registro.
Para ilustrar el formato de. metadatos NET, echemos un vistazo a los metadatos que se ha
generado para el método Add () de la clase VB Calc analizadas (los metadatos generados
de la versión de C # del método Add () es similar):
TypeDef #2 (02000003)
-------------------------------------------------------
TypDefName: [Link] (02000003)
Flags : [Public] [AutoLayout] [Class]
[AnsiClass] [BeforeFieldInit] (00100001)
Extends : 01000001 [TypeRef] [Link]
Method #1 (06000003)
-------------------------------------------------------
MethodName: Add (06000003)
Flags : [Public] [HideBySig] [ReuseSlot] (00000086)
RVA : 0x00002090
ImplFlags : [IL] [Managed] (00000000)
CallCnvntn: [DEFAULT]
hasThis
ReturnType: I4
2 Arguments
Argument #1: I4
Argument #2: I4
2 Parameters
(1) ParamToken : (08000001) Name : x flags: [none] (00000000)
(2) ParamToken : (08000002) Name : y flags: [none] (00000000)
A pesar de lo que puede pensar, los metadatos es una entidad muy útil (en lugar de un académico
detalle) consumida por los numerosos aspectos del entorno de ejecución. NET, así como por
diversos
herramientas de desarrollo. Por ejemplo, la característica IntelliSense que proporciona Visual Studio
2008, se
posible mediante la lectura de los metadatos de un ensamblado en tiempo de diseño. Los
metadatos también es utilizado por varios objectbrowsing
utilidades, herramientas de depuración, y el Visual Basic 2008 se compilador. Para estar seguros,
los metadatos se
la columna vertebral de numerosas. NET incluyendo Windows Communication Foundation,
servicios de la reflexión, a finales instalaciones vinculante, los servicios web XML / la. capa NET
Remoting, y el objeto
serialización proceso. Capítulo 16 formalizará el papel de. NET metadatos.
En pocas palabras, este documento manifiesta la lista de ensamblados externos requeridos por
[Link] (a través de
la asamblea. directivas externa), así como diversas características de la propia Asamblea (versión
número, nombre del módulo, etc.) Capítulo 15 examinará la utilidad de los datos del manifiesto en la
mayor parte
más detalles.
Comprender el sistema de tipos común
Un montaje de la propuesta puede contener cualquier número de distintos "tipos". En el mundo de.
NET, "tipo " es simplemente
un general termused para referirse a un miembro del conjunto {clase, interfaz, estructura,
enumeración, delegado}.
Al crear soluciones usando un lenguaje. NET-consciente, lo más probable es interactuar con
cada uno de estos tipos. Por ejemplo, el ensamblado puede definir una sola clase que implementa
algunos
número de interfaces. Tal vez uno de los métodos de interfaz tiene una enumeración como una
entrada
parámetro y devuelve una estructura a la persona que llama.
Recordemos que el sistema de tipos común (CTS) es una especificación formal de que el número
de documentos tipos
deben ser definidos con el fin de ser acogida por el CLR. Normalmente, los únicos individuos que
están profundamente
relacionados con el funcionamiento interno de la CTS son las herramientas para la construcción y /
o compiladores que se dirigen a
el. NET. Es importante, sin embargo, para todos. NET a aprender acerca de cómo trabajar
con los cinco tipos definidos por el CTS en el idioma de su elección. He aquí una breve descripción.
CTS tipos de clase
Todos los idiomas. NET-consciente apoya, por lo menos, la noción de un tipo de clase, que es la
piedra angular
de la programación orientada a objetos (POO). Una clase puede estar compuesto de cualquier
número de
miembros (por ejemplo, propiedades, métodos y eventos) y los puntos de datos (datos de campo,
también conocido
como variables miembro). En Visual Basic 2008, las clases se declaran mediante la palabra clave de
clase:
Si usted tiene experiencia en el desarrollo de clases VB6, tenga en cuenta que los tipos de clase ya
no son
definido dentro de un archivo *. cls, dado el hecho de que ahora tenemos una palabra clave
específica para la definición de clase
tipos (recordemos que todo el código VB se encuentra ahora dentro de los archivos *. vb). Los
capítulos 5 y 6 se examinará la
detalles de la construcción de tipos de clases con Visual Basic 2008.
CTS tipos de interfaz
Una interfaz no es más que una colección con nombre de definiciones de miembros que pueden
contar con el apoyo
(es decir, ejecutado) por una determinada clase o estructura. A diferencia de COM, interfaces. NET
no obtengan un común
de base, tales como la interfaz IUnknown. En VB 2008, los tipos de interfaz se definen mediante la
interfaz
palabra clave, por ejemplo:
Por su cuenta, las interfaces son de poca utilidad. Sin embargo, cuando una clase o estructura
implementa una propuesta
interfaz en su forma única, usted puede solicitar el acceso a la funcionalidad proporcionada
mediante un
referencia de la interfaz de "manera polimorfa". interfaz de programación basada Se explora la
en el capítulo 9.
CTS tipos de estructura
El concepto de una estructura también se formalizó en el marco del CTS. En pocas palabras, una
estructura puede ser
pensado como una alternativa ligera a los tipos de clase, que tienen una semántica basada en
valores (véase
Capítulo 12 para más detalles). Por lo general, las estructuras son más adecuadas para la
modelización numérica, geométrica,
o tipos de datos matemáticos y se crean en Visual Basic 2008 utilizando la palabra clave de la
estructura:
Las demandas de CTS que los tipos enumerados derivan de una clase base común, [Link].
Como
verá en el capítulo 4, esta clase base define un número de miembros interesantes que le permiten
extraer, manipular y transformar el nombre de base / valor mediante programación.
CTS tipos de delegado
Los delegados son quizás los más complejos de tipo NET;. Sin embargo, son muy importantes, ya
que son
para formthe fundación de la arquitectura de eventos. NET. Para estar seguro, en cualquier
momento que desee para manejar
el clic de un botón, la actividad del ratón interceptar, o proceso de devoluciones de datos en un
servidor web, los delegados
ser utilizado en el fondo. En pocas palabras, un delegado se utiliza para almacenar las direcciones
de método que se puede
invocada en un momento posterior. En Visual Basic 2008, los delegados se declaran usando la
palabra clave Delegado:
Capítulos 11 y 18 se examinarán los detalles de. NET delegado, incluyendo numerosos asociados
detalles tales como la multidifusión (es decir, el reenvío de una solicitud a varios destinatarios) y
asincrónica
(es decir, sin bloqueo) invocaciones de método.
nNota 2008 VB proporciona numerosas palabras clave (véase el capítulo 11) que eliminan la
necesidad de definir manualmente delegado
tipos. Sin embargo, son capaces de definir los delegados directamente cuando se desea construir
más compleja y potente
soluciones.
CTS miembros de tipo
Ahora que ha visto previamente cada uno de los tipos formalizado por la CTS, se dan cuenta que la
mayoría de tipos
puede contener cualquier número de miembros. Formalmente hablando, un miembro de tipo se ve
limitada por el conjunto
{constructor, finalizador, constructor de la residencia, tipo anidado, operador, método, propiedad,
paso a paso, el campo,
campo de sólo lectura, un evento constante,}.
El CTS define varios "adornos" que pueden estar asociados con un miembro determinado. Por
ejemplo,
cada miembro tiene un nivel de visibilidad dada marcados con un determinado VB 2008 la palabra
clave (por ejemplo, pública,
Privado, protegido, etc.) Algunos miembros pueden ser declarados como "abstracto" para hacer
cumplir una polimórficos
comportamiento de los tipos derivados, así como "virtual" para definir una lata (pero reemplazables)
la aplicación.
Además, la mayoría de los miembros puede ser configurado como compartido (consolidados en el
nivel de clase) o instancia (consolidados a el nivel de objeto). La construcción de los miembros de
tipo se examina en el transcurso de los próximos varios
capítulos.
nNota Como se describe en el capítulo 10, Visual Basic 2008 admite la construcción de los tipos
genéricos y los miembros de genéricos.
Intrínseca CTS tipos de datos
El aspecto final de la CTS a tener en cuenta por el momento es que establece un conjunto bien
definido
de tipos de datos fundamentales. A pesar de una lengua dada normalmente tiene una palabra clave
única para
declarar una CTS intrínseca tipo de datos, todas las palabras clave del lenguaje en última instancia
resolver al mismo tipo
definido en un ensamblado denominado [Link]. Considere la tabla 1-1, que documenta cómo
las principales CTS
tipos de datos se expresan en diversos. NET.
nNota palabras clave VB para firmar los tipos de datos (SByte, UShort, UInteger y ULong) sólo se
admiten en
. NET 2.0 o superior.
Comprender el lenguaje común
Especificación
Como ustedes saben, las diferencias lingüísticas expresar la misma programación en
construcciones únicas,
términos específicos del lenguaje. Por ejemplo, en VB 2008 se suele denotar la concatenación de
cadenas con
el creador "y" comercial (&), mientras que en C # siempre hacer uso del signo más (+). Incluso
cuando dos
lenguas distintas expresa el mismo lenguaje de programación (por ejemplo, un método sin valor de
retorno), el
es muy probable que la sintaxis se parece bastante diferente en la superficie:
Como ya hemos visto, estas variaciones sintácticas menores son insignificantes a los ojos de
el tiempo de ejecución. NET, ya que los compiladores respectiva ([Link] o [Link], en este caso)
emiten una similar
conjunto de instrucciones de la CIL. Sin embargo, el lenguaje también puede variar con respecto a
su nivel general de
funcionalidad. Por ejemplo, un lenguaje. NET puede o no tener una palabra clave para representar
sin firmar
datos, y puede o no puede apoyar los tipos de puntero. Teniendo en cuenta estas posibles
variaciones, lo ideal sería
tener una línea de base a la cual todos los idiomas. NET-consciente se espera que los conforman.
El Common Language Specification (CLS) es un conjunto de reglas que describen con gran detalle
la
conjunto mínimo y completa de las características de un hecho. NET-consciente debe apoyar para
producir código
que puede ser organizado por el CLR, mientras que al mismo tiempo tener acceso en un
uniformmanner por todos los idiomas
que se dirigen a la plataforma. NET. En muchos sentidos, el CLS puede ser visto como un
subconjunto del total
funcionalidad definida por el CTS.
El CLS es en última instancia, un conjunto de reglas que los constructores compilador debe
conformto, si pretenden que su
productos para funcionar a la perfección en el universo. NET. Cada regla se le asigna un nombre
sencillo (por ejemplo,
"CLS artículo 6") y describe cómo esta norma afecta a los que construyen los compiladores, así
como los
que (de alguna manera) interactuar con ellos. La crème de la crème de la ETI es la regla de un
poderoso:
• Artículo 1: reglas de CLS se aplican sólo a las partes de un tipo que se exponen fuera de la
definición
asamblea.
Teniendo en cuenta esta regla, se puede (correctamente) inferir que los artículos restantes de la ETI
no se aplican a la
lógica utilizada para construir el funcionamiento interno de un tipo. NET. Los únicos aspectos de un
tipo que debe cumplir
el CLS son las definiciones miembros ellos mismos (es decir, convenciones de nombres,
parámetros y
tipos de cambio). La lógica de ejecución de un miembro puede utilizar cualquier número de técnicas
no-CLS,
como el mundo exterior no notará la diferencia.
Para ilustrar esto, el siguiente método Add () no es compatible con CLS, como los parámetros y
volver
los valores de hacer uso de los datos sin signo (que no es un requisito de la cls):
Sin embargo, si usted fuera a hacer simplemente uso de los datos internos sin firmar de la siguiente
manera:
Return x + y
End Function
End Class
usted tendría que aún se ajustaban a las normas de la ETI, y puede estar seguro de que todos los.
NET
son capaces de invocar el método Add ().
Por supuesto, además de con el artículo 1, el CLS define muchas otras reglas. Por ejemplo, el CLS
describe cómo una lengua determinada internamente debe representar cadenas de texto, ¿cómo
debe ser enumeraciones
representan internamente (el tipo de base utilizada para el almacenamiento), la forma de definir los
miembros de la residencia, y así sucesivamente.
Afortunadamente, usted no tiene que cometer estas normas a la memoria para ser un experto.
Desarrollador NET. Una vez más,
por lo general, una comprensión íntima de la CTS y las especificaciones de CLS es sólo de interés
para
herramienta / constructores compilador.
Velar por el cumplimiento CLS
Como se verá a lo largo de este libro, VB 2008 se define una programación de algunas
construcciones que
no son compatibles con CLS. La buena noticia, sin embargo, es que puede indicar al compilador
para VB 2008
verifique el código de compatibilidad con CLS mediante un único atributo. NET:
"Dile que el compilador para comprobar la compatibilidad con CLS.
<Assembly: [Link](True)>
El capítulo 16 se sumerge en los detalles de la programación basada en atributos. Hasta entonces,
sólo tiene que entender
que el atributo <CLSCompliant()> dará instrucciones al compilador de VB 2008 para revisar todas y
cada línea de código en contra de las reglas del CLS. Si cualquier violaciónes CLS se descubren,
recibirá un
compilador de error y una descripción del código de ofender.
Comprender el Common Language Runtime
Además de las especificaciones de CTS y CLS, el próximo TLA (abreviatura de tres letras) que
sostienen
con en este momento es el CLR. Programación hablando, el tiempo de ejecución término puede ser
entendido
como un conjunto de servicios externos que se requieren para ejecutar una determinada unidad de
código compilado. Por
ejemplo, cuando los desarrolladores hacer uso de la Microsoft Foundation Classes (MFC) para crear
una nueva
aplicación, que son conscientes de que su programa requiere la biblioteca MFC en tiempo de
ejecución (por ejemplo, [Link]).
Otros lenguajes populares también tienen un tiempo de ejecución correspondiente. programadores
VB6 también atado a un
tiempo de ejecución del módulo o dos (por ejemplo, [Link]). los desarrolladores de Java
están vinculados a la Máquina Virtual de Java
(JVM) y así sucesivamente.
La plataforma. NET ofrece un nuevo sistema de ejecución. La diferencia clave entre el. NET
tiempo de ejecución y los tiempos de ejecución de los demás que acabo de mencionar es el hecho
de que el tiempo de ejecución. NET proporciona
un solo tiempo de ejecución bien definidos capa que es compartida por todos los idiomas y
plataformas que están. NetAware.
El quid de la CLR está físicamente representada por una [Link] colección con nombre
(también conocido como el Común
Objeto motor de tiempo de ejecución de ejecución). Cuando se hace referencia a una asamblea
para el uso, es [Link]
cargado automáticamente, lo que a su vez carga el ensamblado necesario en la memoria. El motor
de tiempo de ejecución
es responsable de una serie de tareas. En primer lugar, es la entidad encargada de resolver el
ubicación de una asamblea y la constatación del tipo solicitado en el binario al leer el contenido
metadatos. El CLR a continuación, establece el tipo en la memoria, compila el CIL asociados en
platformspecific
instrucciones, realiza todas las comprobaciones de seguridad necesarias, y luego ejecuta el código
en
que se trate.
Además de cargar los ensamblados personalizados y la creación de tipos personalizados, el CLR
también interactúan con los tipos contenidos en las bibliotecas. NET clase base cuando sea
necesario. Aunque
la biblioteca de base de toda la clase se ha dividido en una serie de asambleas discreto, el conjunto
de claves
es [Link]. [Link] contiene un gran número de tipos básicos que encierran una gran
variedad
de tareas de programación comunes, así como los tipos de datos básicos utilizados por todos los
idiomas. NET. Cuando se
construir. soluciones NET, automáticamente tendrá acceso a esta asamblea en particular.
Figura 1-4 ilustra el flujo de trabajo que se lleva a cabo entre el código fuente (que está haciendo
uso de tipos de base de biblioteca de clases), un hecho. NET, y el motor de ejecución de. NET.
Figura 1-4. [Link] en acción
La Asamblea / Espacio de nombres / Distinción Tipo
Cada uno de nosotros entiende la importancia de las bibliotecas de código. El punto de las
bibliotecas que se encuentran dentro de Visual Basic 6,
J2EE, o MFC es dar a los desarrolladores un conjunto bien definido de código existente para
aprovechar en sus aplicaciones.
Sin embargo, el lenguaje Visual Basic 2008 no viene con una biblioteca de código específico del
lenguaje. Por el contrario,
VB 2008 los desarrolladores aprovechar el idioma. bibliotecas NET. Para mantener todos los tipos
dentro de la
bibliotecas de clases base bien organizada, la plataforma. NET hace un uso extensivo del concepto
de espacio de nombres
En pocas palabras, un espacio de nombres es un conjunto de tipos correspondientes que figuran en
una asamblea. Por ejemplo,
el espacio de nombres [Link] contiene el archivo I / O-tipos relacionados, el espacio de
nombres [Link] define el centro de
tipos de base de datos de acceso, el espacio de nombres [Link] define elementos
de la GUI, y así sucesivamente. Es
muy importante señalar que un solo conjunto (como [Link]) puede contener cualquier número
de espacios de nombres, cada uno de los cuales puede contener cualquier número de tipos (clases,
interfaces, estructuras, enumeraciones,
o delegados).
Para aclarar, la Figura 1-5 muestra una captura de pantalla de la utilidad de Visual Studio 2008
objetos de Brower (usted
aprender más acerca de esta herramienta en el capítulo 2). Esta herramienta le permite examinar
los ensamblados de referencia
por la solución actual, los espacios de nombres dentro de un conjunto particular, los tipos dentro de
un determinado
espacio de nombres, y los miembros de un tipo específico. Tenga en cuenta que [Link]
contiene diversas
espacios de nombres, cada uno con sus propios tipos semánticamente relacionados.
Figura 1-5. Un montaje único puede tener cualquier número de espacios de nombres.
La diferencia fundamental entre este enfoque y una biblioteca específica del lenguaje, tales como la
API de Java
es que cualquier orientación por idioma el tiempo de ejecución. NET hace uso de los mismos
espacios de nombres y los mismos tipos.
Por ejemplo, los siguientes tres programas de todos los ilustrar el omnipresente "Hello World ",
escrito en Visual Basic 2008, C # y C + + / CLI:
nNota el capítulo 2 se ilustra el uso del. NET Framework 3.5 SDK, que proporciona detalles
con respecto a cada espacio de nombres y el tipo que se encuentran en las bibliotecas de clases
base.
Acceso a un espacio de nombres mediante programación
Vale la pena reiterar que el espacio de nombres no es más que una manera conveniente para
nosotros los simples humanos
para comprender y organizar lógicamente los tipos relacionados. Consideremos de nuevo el espacio
de nombres System. Desde
su perspectiva, se puede asumir que [Link] representa una clase denominada consola
que se
contenida dentro de un espacio de nombres denominado System. Sin embargo, a los ojos del
tiempo de ejecución. NET, esto no es
así. El motor de tiempo de ejecución sólo se ve una sola entidad llamada [Link].
En Visual Basic 2008, la palabra clave importaciones simplifica el proceso de los tipos de referencia
se define en el
un espacio de nombres en particular. Así es como funciona. Digamos que usted está interesado en
la construcción de una tradicional
aplicación de escritorio. La ventana principal hace un gráfico de barras basado en alguna
información obtenida
a partir de una base de datos de back-end y muestra el logotipo de su empresa. Si bien el
aprendizaje de los tipos cada espacio de nombres
se contiene el estudio y experimentación, he aquí algunos posibles candidatos a la referencia en
su programa:
' Here are all the namespaces used to build this application.
Imports System ' General base class library types.
Imports [Link] ' Graphical rendering types.
Imports [Link] ' GUI widget types.
Imports [Link] ' General data-centric types.
Imports [Link] ' MS SQL Server data access types
Una vez especificado un número de espacios de nombres (y establecer una referencia a las
asambleas
que los definen, que se explica en el capítulo 2), usted es libre de crear instancias de los tipos que
contienen. Por ejemplo, si usted está interesado en la creación de una instancia de la clase Bitmap
(definido en el
Espacio de nombres [Link]), puede escribir lo siguiente:
Si bien la definición de un tipo utilizando el nombre completo proporciona una mayor facilidad de
lectura, creo que había
de acuerdo en que la palabra clave de Visual Basic 2008 las importaciones reduce las pulsaciones
de teclado. En este texto, voy a evitar el uso de la plena
nombres completos (a menos que exista una ambigüedad definida por resolver) y optar por el
procedimiento simplificado
enfoque de la palabra clave Imports.
Sin embargo, recuerde siempre que esta técnica es simplemente una notación abreviada para
especificar un
tipo es totalmente nombre completo, y teniendo en cuenta los resultados de cada enfoque en el
exacto mismo CIL subyacente (el
hecho de que el código CIL siempre hace uso de los nombres completos) y no tiene ningún efecto
sobre el rendimiento o
el tamaño del ensamblado generado.
Hacer referencia a ensamblados externos
Además de especificar un espacio de nombres a través de la palabra clave de Visual Basic 2008 las
importaciones, también hay que decir la
VB 2008 compilador el nombre del ensamblado que contiene la definición real de la CIL referencia
tipo. Como se ha mencionado, de múltiples núcleos. NET vivir dentro de espacios de nombres
[Link]. Sin embargo, el Sistema.
Tipo [Link] está contenida en un ensamblado independiente nombrado
[Link]. Un gran
mayoría de las asambleas. NET Framework se encuentra en un directorio específico denominado el
mundial
memoria caché de ensamblados (GAC). En una máquina Windows, esto puede ser localizado en C:
\ Windows \ assembly, como
muestra en la Figura 6.1.
Figura 1-7. [Link] le permite ver la composición interna de cualquier conjunto. NET.
Viendo el código CIL
Además de mostrar los espacios de nombres, tipos, y los miembros que figuran en una asamblea
dado,
[Link] también le permite ver las instrucciones del CIL de un miembro determinado. Por
ejemplo, si
fueron a doble clic en el método Main () del tipo de programa, una ventana independiente que
muestra la
subyacentes del CIL (ver Figura 1-8).
Figura [Link] el CIL subyacentes a través de [Link]
Ver los metadatos de tipo
Si desea ver los metadatos de tipos para el ensamblado cargado, pulse Ctrl + M. Figura 1-9
muestra los metadatos de la [Link] () método
libremente enviado e instalado junto con su. NET de software. Este programa de instalación se
puede descargar
de Microsoft de su. NET área de descarga ([Link]
Una vez [Link] está instalado, el equipo de destino contendrá ahora la clase. NET
base
bibliotecas,. NET ([Link]), y adicionales. infraestructura de red (por ejemplo, el GAC).
nNota El sistema operativo Windows Vista está preconfigurado con todas las necesarias.
infraestructura NET. Sin embargo,
si va a implementar su aplicación a otras versiones del sistema operativo Windows, tendrá que
velar por el equipo de destino tiene el medio ambiente. NET instalado y configurado.
La naturaleza independiente de la plataforma. NET
Para cerrar este capítulo, me permito hacer un breve comentario sobre la naturaleza independiente
de la plataforma. NET
plataforma. Para la sorpresa de la mayoría de los desarrolladores. NET puede ser desarrollado y
ejecutado en
los sistemas no operativos de Microsoft (Mac OS X, numerosas distribuciones de Linux y Solaris,
por nombrar
pocos). Para entender cómo es esto posible, es necesario llegar a un acuerdo con otra sigla
NET en el universo. CLI (Common Language Infrastructure).
WhenMicrosoft lanzado la plataforma. NET, también a mano un conjunto de documentos formales
que
se describe la sintaxis y la semántica de los lenguajes C # y lenguajes de CIL, el formato. NET, base
. NET espacios de nombres, y la mecánica de un hipotético. Motor NET (conocido como el virtual
Sistema de Ejecución, o VES). Mejor aún, estos documentos han sido sometidos a ECMA
International
como oficial de las normas internacionales ([Link] Las especificaciones
de interés son
• ECMA-334: El C # Especificación del lenguaje
• ECMA-335: La Infraestructura de Lenguaje Común (CLI)
nNota Microsoft no ha definido una especificación formal con respecto a la de Visual Basic 2008
lenguaje de programación.
La buena noticia, sin embargo, es que el código abierto más importantes. NET distribuciones vienen
con un compilador BASIC compatible.
La importancia de estos documentos se hace evidente cuando se comprende que permiten
terceros para construir distribuciones de las platformfor. NET cualquier número de sistemas
operativos
y / o transformadores. ECMA-335 es quizás el más "carne" de las dos especificaciones, hasta el
punto de
que se ha dividido en seis divisiones, como se muestra en la Tabla 1-3.
Tenga en cuenta que la partición IV (Perfiles y Bibliotecas) sólo define un conjunto mínimo de
espacios de nombres
que representan los servicios fundamentales que se exigen por una distribución de la CLI
(colecciones, consola de E / S / S de archivos,
roscado, la reflexión, acceso a la red, las necesidades básicas de seguridad, la manipulación de
XML, etc). La
CLI no define los espacios de nombres que faciliten el desarrollo web ([Link]), acceso a bases
de datos
([Link]), o el desarrollo de aplicaciones de escritorio interfaz gráfica de usuario (a través de
Windows Forms o Windows Presentation
Fundación).
La buena noticia, sin embargo, es que la corriente principal. distribuciones NET ampliar las
bibliotecas de la CLI
con sus equivalentes de Microsoft compatibles con [Link], [Link] y Windows Forms (entre
otros
API) con el fin de ofrecer todas las funciones, las plataformas de desarrollo a nivel de producción.
Hasta la fecha, hay
dos implementaciones más importantes de la CLI (más allá de ofrecer específicas de Windows de
Microsoft). Aunque
este texto se centra en la creación de aplicaciones. NET utilizando. NET de Microsoft, la
distribución, la tabla 1-4
proporciona información sobre el Mono y proyectos [Link].
Ambos Mono y [Link] proporcionar una ECMA C # compilador compatible,. motor NET,
ejemplos de código y documentación, así como numerosas herramientas de desarrollo que son
funcionalmente
equivalentes a las herramientas que se incluyen con. NET Framework de Microsoft 3.5 SDK. Por
otra parte, Mono y
[Link] colectivamente buque con un compilador de Visual Basic, Java y C.
nNota Si desea conocer más acerca de Mono o [Link], visita de la Cruz-plataforma de
desarrollo NET:. Uso
Mono, [Link], y Microsoft. NET Easton MJ y King Jason (Apress, 2004).
Resumen
El objetivo de este capítulo fue establecer el marco conceptual necesario para el resto de
este libro. Empecé por el examen de una serie de limitaciones y complejidades que se encuentran
dentro de las tecnologías
antes de. NET, y siguió con una visión general de cómo hacerlo. NET y Visual Basic 2008 intento
para racionalizar el actual estado de cosas.
si usted es de hecho va a estar utilizando Visual Studio 2008 o Visual Basic 2008 Express, no tienen
necesidad de instalar manualmente el. NET Framework 3.5 SDK. Al instalar cualquiera de estos
productos,
el SDK se instala automáticamente, con lo que te da todo lo que necesite de la caja. Sin embargo,
si no se va a usar un IDE de Microsoft como usted trabaja a través de este texto, asegúrese de
instalar el
SDK antes de continuar.
El Visual Studio 2008 del símbolo del sistema
Cuando se instala el. NET Framework 3.5 SDK, Visual Studio 2008 o Visual Basic 2008 Express,
terminará con una serie de nuevos directorios en el disco duro local, cada uno de los cuales
contiene varios
. NET herramientas de desarrollo. Muchas de estas herramientas son expulsados del símbolo del
sistema, por lo que si
desea utilizar estos servicios desde cualquier ventana de comandos de Windows, tendrá que
registrar estos
caminos con el sistema operativo.
Mientras que usted puede actualizar la variable PATH de forma manual para hacerlo (que no se
molestará en hacer
aquí), puede ahorrar un poco de tiempo, simplemente haciendo uso de los comandos de Visual
Studio 2008
Del sistema que es accesible desde el inicio äPrograms äMicrosoft Visual Studio 2008 äVisual
Estudio
carpeta de herramientas (ver Figura 2-1).
Figura 2-1. El Visual Studio 2008 del símbolo del sistema
La ventaja de utilizar este comando en particular del sistema es que se ha preconfigurado para
ofrecer
el acceso a cada una de las herramientas de desarrollo. NET sin necesidad de modificar la variable
PATH
ajustes. Suponiendo que ha instalado un entorno. NET, escriba el siguiente comando
y pulse la tecla Intro:
vbc -?
Si todo va bien, debería ver una lista de argumentos de línea de comandos del compilador de línea
de comandos de VB
(Donde vbc representa el compilador de Visual Basic).
La VB 2008 la línea de comandos del compilador ([Link])
Hay una serie de técnicas que puede utilizar para compilar el código fuente de VB 2008. Además de
Visual Studio 2008 (así como varios de terceros. NET IDE), que son capaces de crear. NET
con el VB 2008 compilador de línea de comandos, [Link]. Si bien es cierto que usted nunca podrá
decidir
construir una aplicación a gran escala utilizando el compilador de línea de comandos, es importante
comprender la
conceptos básicos de cómo compilar los archivos *. vb a mano. No puedo pensar en algunas de las
razones que usted debe obtener un control
sobre el proceso:
• La razón más obvia es el simple hecho de que puede que no tenga una copia de Visual
Studio 2008.
• Usted puede estar en un ambiente universitario donde está prohibido el uso de la generación de
código
herramientas y entornos de desarrollo en el aula.
• Tiene intención de hacer uso de sistemas automatizados. NET herramientas de construcción como
de MSBuild o de NAnt.
• Desea profundizar el conocimiento de VB 2008. Cuando se utiliza para construir entornos de
desarrollo gráfico
aplicaciones, que son en última instancia, instruir [Link] cómo manipular la entrada de VB 2008
archivos. En este sentido, es edificante para ver lo que ocurre detrás de las escenas.
Otro buen producto derivado de trabajar con [Link] en la materia prima es que usted se convierte
en mucho
más cómoda la manipulación de otras herramientas de línea de comandos se incluye con el. NET
Framework 3.5
SDK. Como se verá a lo largo de este libro, una serie de utilidades importantes son accesibles sólo
desde
la línea de comandos.
La construcción de aplicaciones con Visual Basic 2008 [Link]
Para ilustrar cómo construir una. NET IDE libre, vamos a construir un simple montaje de un solo
archivo
llamado [Link] con el VB 2008 compilador de línea de comandos y el Bloc de notas. En
primer lugar, usted necesita una cierta
de código fuente. Abra el Bloc de notas y escriba lo siguiente:
Una vez que haya terminado, guarde el archivo en una ubicación conveniente (por ejemplo, C: \
VbcExample) como
[Link]. Ahora, vamos a conocer las opciones fundamentales de la VB 2008 compilador. El
primer punto de interés
es entender cómo especificar el nombre y tipo de reunión para crear (por ejemplo, una consola
aplicación denominada [Link], una biblioteca de código llamado [Link], aWindows Forms
[Link] nombre, etc.) Cada posibilidad es representado por una bandera específica se
introdujo [Link] como
parámetro de línea de comandos (ver Tabla 2-1).
cd c:\VbcExample
A continuación, escriba el siguiente comando conjunto (tenga en cuenta que las banderas de línea
de comandos debe venir antes de la
nombre de los archivos de entrada, no después):
También tenga en cuenta que la mayoría de las opciones del compilador Visual Basic 2008 admiten
una versión abreviada, como
/ t en lugar de / target (puedes leer todas las abreviaturas introduciendo vbc /? en el símbolo del
sistema).
Por ejemplo, usted puede ahorrarse algunos golpes de teclado mediante la especificación de los
siguientes:
Además, dado que el modificador / t: exe bandera es la salida por defecto utilizado por el compilador
de VB 2008, que
También podría elaborar [Link] simplemente escribiendo lo siguiente:
vbc [Link]
[Link] ahora se puede ejecutar desde la línea de comandos, escriba el nombre del ejecutable
y
pulsando la tecla Intro. Si todo va bien, debería ver el mensaje "Prueba! 1, 2, 3 "imprimir a la
ventana de comandos (ver Figura 2-2).
Si ahora vuelve a ejecutar la aplicación, usted debe ver lo que aparece en la figura 2.3, además de
la
salida de la consola.
Suponiendo que usted ha guardado este archivo nuevo en la misma ubicación que el primer archivo
(por ejemplo,
C: \ VbcExample), actualizar su clase TestApp hacer uso de este nuevo tipo, y comentar
la lógica anterior de Windows Forms. Aquí está la completa actualización:
Usted puede compilar el VB 2008 archivos haciendo una lista de cada archivo de entrada
explícitamente:
Como alternativa, el compilador de VB 2008 le permite hacer uso del carácter comodín (*)
para informar a [Link] para incluir todos los archivos *. vb que figuran en el directorio del proyecto
como parte de la corriente
construcción:
vbc /r:[Link] *.vb
Cuando se ejecuta el programa de nuevo, la salida es idéntica. La única diferencia entre los dos
solicitudes es el hecho de que la lógica actual se ha dividido en varios archivos.
Hacer referencia a varios ensamblados externos Uso de [Link]
En una nota relacionada, lo que si necesita hacer referencia a varios ensamblados externos
utilizando [Link]?
Simplemente una lista de cada conjunto mediante una lista delimitada por comas. No es necesario
especificar múltiples externos
asambleas para el ejemplo actual, sino que sigue algunos ejemplos de uso:
Ahora, suponiendo que este archivo se guarda en el mismo directorio que el VB 2008 archivos de
código fuente que se
compilado, que son capaces de generar la aplicación completa de la siguiente manera (nótese el
uso del símbolo @):
vbc @[Link]
Si la necesidad se presente, que también son capaces de especificar varios archivos *. rsp como
entrada (por ejemplo, vbc
@ @ [Link] [Link] @ [Link]). Si toma este enfoque, se tenga en cuenta que el
compilador procesa las opciones del comando, ya que se encuentran! Por lo tanto, los argumentos
de línea de comandos
en un archivo *. rsp tarde puede anular las opciones en un archivo de respuesta anterior.
También tenga en cuenta que las banderas que figuran explícitamente en la línea de comandos
antes de que un archivo de respuesta se reemplaza
por el archivo *. rsp especificado. Por lo tanto, si usted fuera a entrar en
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
/r:[Link]
# Import System and [Link]
/imports:System
/imports:[Link]
/imports:[Link]
/imports:[Link]
/optioninfer+
Entender nNota que el archivo de respuesta predeterminada sólo se hace referencia cuando se
trabaja con el compilador de línea de comandos.
El Visual Basic 2008 Express y Visual Studio 2008 IDE no se ajusta automáticamente las
referencias a estos
colecciones.
Cuando usted está construyendo su VB 2008 con programas de [Link], este archivo
automáticamente se hace referencia,
aun cuando la oferta de un archivo *. RSP. Habida cuenta de la presencia del archivo de respuesta
predeterminada,
la actual aplicación [Link] podría ser compilado correctamente con el siguiente comando
conjunto (como se hace referencia en [Link] [Link]):
Obviamente, el VB 2008 compilador de línea de comandos tiene muchas otras opciones que se
pueden utilizar para
controlar el modo en el archivo. NET se va a generar. En este punto, sin embargo, usted debe tener
a manejar los conceptos básicos. Si desea conocer más detalles sobre la funcionalidad de [Link],
de búsqueda de. NET Framework 3.5 documentación para el término "[Link]".
nSource Código VbcExample El proyecto se incluye en el Capítulo 2 subdirectorio.
Edificio. NET Usando SharpDevelop
Mientras que el Bloc de notas está muy bien para la creación de simple. Programas NET, no ofrece
nada en el camino de desarrollador
productividad. Lo ideal sería al autor *. vb archivos con un editor que soporta (como mínimo) la
palabra clave
coloración y la integración con el compilador de VB. Además, esperamos para construir nuestra VB
programas que utilizan una herramienta que apoya las capacidades ricas de IntelliSense, los
diseñadores para la creación de gráficos
interfaces de usuario, plantillas de proyecto y herramientas de base de datos de la manipulación. La
suerte quiso que numerosas
herramientas existen, muchos de los cuales son completamente gratis.
Para hacer frente a esas necesidades, permítame presentarle la siguiente opción de desarrollo.
NET: Sharp
Desarrollar (también conocido como # develop). SharpDevelop es un IDE de código abierto y rico en
funciones que
puede utilizar para construir. NET utilizando Visual Basic o C #, así como el uso de CIL y una
inspirada en Python. NET
lenguaje llamado Boo. Más allá del hecho de que este IDE es completamente gratuito, es
interesante señalar que
fue escrito enteramente en C # (y podría tener la misma facilidad se ha escrito en Visual Basic). De
hecho,
tiene la opción de descargar y compilar los archivos *. cs manualmente o ejecutar un programa de
instalación para instalar
SharpDevelop en su equipo de desarrollo. Ambas distribuciones se pueden obtener de
[Link] (a la hora de escribir este artículo, la versión actual es de 2,2, sin
embargo, se
Asegúrese de descargar la última y mejor).
SharpDevelop proporciona numerosas mejoras de la productividad y en muchos casos es la función
ricos como Visual Studio 2008 Standard Edition. Aquí está una lista de resultados parciales de
algunas de las ventajas principales:
• IntelliSense, la finalización de código, y la capacidad de fragmento de código
• Un cuadro de diálogo Agregar referencia a los conjuntos de referencia externa, incluidos los
ensamblados
implementar en la caché de ensamblados global (GAC)
• Un visuales de Windows Forms Designer
• Integrado examen de objetos y servicios públicos código de la definición
• Visual utilidades de base de datos de diseño
• Un VB a C # (y viceversa) utilidad de conversión de código
• Integración con el NUnit (un archivo. NET unidad de servicios públicos de prueba) y Nant (un
archivo. NET Utilidad de construcción)
• Integración con el. NET Framework 3.5 SDK
Impresionante para un país libre IDE, ¿no? Aunque este capítulo no se aplica a cada uno de estos
puntos en
detalle, vamos a caminar a través de algunos artículos de interés.:
Figura 2-5. Gráficamente el diseño de una aplicación de Windows Forms con SharpDevelop
Si tuviera que hacer clic en el botón Fuente montado en la parte inferior del diseñador del
formulario, usted
encontrar la espera de IntelliSense, la finalización de código, y características integradas de
ayuda (ver Figura 2-6).
SharpDevelop fue diseñado para imitar la mayor parte de la misma funcionalidad que se encuentran
dentro de Microsoft
. NET IDE (que examinaremos a continuación). Teniendo en cuenta este punto, no voy a profundizar
en todas las características de este
de código abierto. NET. Si desea más información, basta con utilizar el menú Ayuda siempre.
nNota Usted es libre de utilizar SharpDevelop medida que se trabaja a través de esta edición del
texto. No se sabe, sin embargo,
que algunos de los capítulos pueden especificar las opciones de menú, herramientas o métodos
abreviados de teclado que son específicos a Visual
Studio 2008.
Edificio. NET utilizando Visual Basic
2008 Express
Durante el verano de 2004, Microsoft introdujo una línea completamente nueva de IDEs que caen
bajo la denominación
de "Express" productos ([Link] Hasta la fecha, hay varios
miembros de la familia Express (todos los cuales son completamente gratis y apoyado y mantenido
por
Microsoft Corporation), incluyendo las siguientes:
• Visual Web Developer 2008 Express: Una herramienta ligera para la construcción de sitios web
dinámicos y
Servicios web XML con [Link]
• Visual Basic 2008 Express: Un ideal herramienta de programación optimizada para los
programadores novatos
que quieren aprender a crear aplicaciones utilizando la sintaxis de uso fácil de Visual Basic
• Visual C # 2008 Express y Visual C + + 2008 Express: Dirigida IDEs para estudiantes y aficionados
que deseen aprender los fundamentos de la informática en su sintaxis de elección
• SQL Server 2005 Express: Una base de datos de nivel de entrada del sistema de gestión orientado
a los aficionados,
aficionados, estudiantes y desarrolladores
Algunas características únicas de Visual Basic 2008 Express
Versiones En general, los productos Express están reducida de sus homólogos de Visual Studio
2008
y afectan principalmente a los. NET aficionados y estudiantes. Al igual que SharpDevelop, Visual
Basic
2008 Express ofrece varias herramientas de navegación de objetos, un diseñador de formularios
Windows Forms, el Agregar referencias
cuadro de diálogo, capacidad de IntelliSense, y la expansión de las plantillas del código.
Sin embargo, Visual Basic 2008 Express ofrece unos pocos (importante) las características no
disponibles actualmente en
SharpDevelop, incluyendo las siguientes:
• Rico soporte para Windows Presentation Foundation (WPF) XAML
• IntelliSense para nuevas construcciones sintácticas VB 2008 que incluyen declaraciones de
consulta LINQ
• La capacidad de programar para Xbox 360 y juegos de video en PC usando el libre acceso
Microsoft
XNA Game Studio
Considere la figura 7.2, que muestra el uso de Visual Basic Express al autor el marcado XAML
para un proyecto de WPF.
Debido a la apariencia de Visual Basic 2008 Express es tan similar a la de Visual Studio 2008
(Y, hasta cierto punto, SharpDevelop), que no ofrecen un paseo a través de este IDE en particular
aquí.
Sin embargo, recuerde que esta herramienta es de uso completamente gratuito y le ofrecerá todas
las características
que necesita para trabajar durante el resto de este texto.
Figura [Link] Basic 2008 Express cuenta con soporte integrado para. NET 3.0 y 3.5 de. NET
API.
nNota Usted es libre de utilizar Visual Basic Express como usted trabaja a través de esta edición del
texto. Una vez más, se tenga en cuenta,
sin embargo, que algunos de los capítulos pueden llamar a las opciones de menú, herramientas o
métodos abreviados de teclado que son específicos de
Visual Studio 2008.
Edificio. NET utilizando Visual
Studio 2008
Si usted es un profesional. ingeniero de software NET, las posibilidades son muy buenas que su
empleador ha comprado IDE principal de Microsoft, Visual Studio 2008, por sus esfuerzos de
desarrollo
([Link] Esta herramienta es de lejos la más rica en características y
lista para la empresa IDE examinados en este capítulo. Por supuesto, este poder tiene un precio,
que se
varían en función de la versión de Visual Studio 2008 que usted compra. Como se puede
sospechar, cada versión
proporciona un conjunto único de características.
nNota Hay un asombroso número de miembros dentro de Visual Studio 2008 de la familia. Mi
hipótesis durante
el resto de este texto es que usted ha elegido para hacer uso de Visual Studio 2008 Professional
como el IDE
A pesar de que se suponga que tiene una copia de Visual Studio 2008 Professional, entiendo que
ser propietario de una copia de este IDE no es necesario para utilizar esta edición del texto. En el
peor de los casos, es posible que
examinar una opción que no es proporcionada por el IDE. Sin embargo, estar seguro de que todos
los de este libro
código de ejemplo se compila bien cuando son procesadas por la herramienta de elección.
nNota Una vez descargado el código fuente de este libro desde el código fuente / zona de
Descargas de la Apress
sitio web ([Link] puede cargar el ejemplo actual en Visual Studio 2008 (o Visual
Basic
2008 Express) haciendo doble clic en el ejemplo de archivo *. sln. Si no está utilizando Visual Studio
2008/Visual
Basic 2008 Express, tendrá que insertar manualmente el siempre *. vb en el área de trabajo del
proyecto del IDE.
Algunas características únicas de Visual Studio 2008
Visual Studio 2008 se suministra con la espera diseñadores de interfaz gráfica de usuario, soporte
de fragmentos de código, la manipulación de bases de datos
herramientas, objetos y las utilidades del proyecto de navegación, y un sistema de ayuda integrado.
A diferencia de muchos de los
IDE que ya hemos examinado, Visual Studio 2008 ofrece numerosas adiciones. Aquí hay una
parcial
lista:
• Visual XML editores / diseñadores
• Soporte para el desarrollo de dispositivos móviles (como teléfonos inteligentes y dispositivos
Pocket PC)
• Soporte para desarrollo de Microsoft Office
• Apoyo Designer para Windows Workflow Foundation (WF) proyectos
• Soporte integrado para la refactorización de código
• Visual utilidades clase de diseño
• El objeto de banco de prueba de ventana, que le permite crear objetos e invocar a sus miembros
directamente en el IDE
Para ser completamente honesto, Visual Studio 2008 ofrece tantas características que sería
necesario un
todo el libro (un libro bastante grande por cierto) para describir completamente todos los aspectos
del IDE. Esto no es
libro. Sin embargo, quiero señalar algunas de las características principales de las páginas que
siguen. A medida que
el progreso a través del texto, usted aprenderá más acerca de Visual Studio 2008 IDE en su caso.
Orientación. NET Framework Uso del nuevo proyecto
Cuadro de diálogo
Para examinar algunas de las características básicas de Visual Studio 2008, cree una nueva
aplicación de consola de Visual Basic
(Nombre Vs2008Example) utilizando el elemento de menú Archivo ANew äProject. Como se puede
ver en la Figura 2-8,
Visual Studio 2008 ahora (por fin) admite la posibilidad de seleccionar qué versión de. NET
Framework
desea construir en contra (2.0, 3.0 o 3.5) utilizando el cuadro de lista desplegable en la parte
superior derecha de la
Nuevo proyecto de cuadro de diálogo. Para cada proyecto en este texto, sólo tiene que dejar la
selección por defecto de
. NET Framework 3.5.
Figura [Link] Studio 2008 ahora le permite orientar una determinada versión de. NET
Framework.
Uso de la utilidad Explorador de soluciones
La utilidad Explorador de soluciones (accesible desde el menú Ver) que permite ver el conjunto de
todo el contenido
archivos y ensamblados de referencia que conforman el proyecto actual. De forma predeterminada,
el Explorador de soluciones
No le mostrará el conjunto de ensamblados de referencia utilizado por el proyecto o los directorios
de salida
utilizado por Visual Studio 2008 (como \ bin \ Debug). Para ver todos los aspectos de su proyecto,
debe hacer clic en
el botón Mostrar todos los archivos de la barra de herramientas del Explorador de soluciones (ver
Figura 2-9).
Figura 2-9. El Explorador de soluciones de servicios públicos
CAPÍTULO 2 EDIFICIO n Visual Basic 2008 APLICACIONES 49
Observe que la carpeta Referencias del Explorador de soluciones muestra una lista de cada
conjunto tiene
Actualmente se hace referencia, que será diferente en función del tipo de proyecto seleccionado y la
versión del
Marco está compilando en contra.
Hacer referencia a ensamblados externos
Cuando usted necesita a las asambleas de referencia adicional, usted puede hacer clic en la
carpeta Referencias
en el Explorador de soluciones y seleccione la opción Agregar referencia del menú o simplemente
haga un proyecto de
Agregar referencia opción de menú de Visual Studio 2008. En cualquier caso, usted puede
seleccionar el conjunto de
el cuadro de diálogo resultante (esto es esencialmente la forma de Visual Studio le permite
especificar la referencia /
opción del compilador de línea de comandos).
. El NET (vea la Figura 2-10) muestra una serie de uso general NET;. sin embargo,
Ver la ficha le permite desplazarse a cualquier conjunto. NET en su disco duro. Además, el
ficha muy recientes útil un recuento actualizado de las asambleas con frecuencia se hace referencia
se han utilizado en
otros proyectos.
Figura 2-10. El cuadro de diálogo Agregar referencia
Ver las propiedades del proyecto
Por último, observe un icono llamado Mi proyecto en el Explorador de soluciones. Al hacer doble clic
en este elemento,
que se presentan con un editor de configuración de proyectos complejos (véase la Figura 2-11).
Podrás ver distintos aspectos de la ventana de mi proyecto a medida que avanza a través de este
libro. Sin embargo,
si toma algún tiempo para echar un vistazo, podrás ver que se puede establecer la seguridad
diferentes
configuración, con fuerza el nombre de su conjunto, implementar la aplicación, los recursos de
inserción de aplicaciones y
configurar los eventos pre y generación posterior.
Como puede ver, Visual Studio 2008 define un buen número de fragmentos de código. Sin duda, el
mejor
manera de aprender acerca de cada posibilidad es simplemente a través de la experimentación.
Bajo el capó, cada código
fragmento de código se define dentro de un documento XML (teniendo una extensión *. fragmento
de forma predeterminada), ubicado en
el directorio C: \ Archivos de programa \ Microsoft Visual Studio 9.0 \ VB \ Snippets \ 1033 de la guía.
De hecho, dado que
cada fragmento es simplemente una descripción XML del código que se inserta dentro del IDE, es
muy sencillo
la construcción de fragmentos de código personalizados.
Detalles nNota de cómo construir fragmentos de encargo se pueden encontrar en mi artículo "La
investigación de fragmentos de código Tecnología"
en [Link] Si bien el artículo se muestra la construcción de fragmentos de código
C #, se puede muy fácilmente
construir VB 2008 por fragmentos de edición de código VB 2008 (en lugar de código C #) dentro de
la sección del fragmento de CDATA.
El Diseñador de clases Visual
Visual Studio 2008 nos da la capacidad de diseñar clases visuales (pero esta capacidad no está
incluido en
Visual Basic 2008 Express). La utilidad Diseñador de clases le permite ver y modificar las relaciones
de los tipos (clases, interfaces, estructuras, enumeraciones y delegados) en el proyecto.
Con esta herramienta, usted puede agregar visual (o eliminar) los miembros (o desde) un tipo y que
su
modificaciones que se recogen en el archivo correspondiente *. vb. Además, al modificar un
determinado archivo de VB 2008,
cambios se reflejan en el diagrama de clase.
Para trabajar con este aspecto de Visual Studio 2008, el primer paso es insertar un nuevo archivo
de diagrama de clase.
Hay muchas maneras de hacerlo, una de ellas es hacer clic en el botón Ver diagrama de clase se
encuentra en
Lado derecho el Explorador de soluciones (ver Figura 2.16).
Figura 2-16. Inserción de un archivo de diagrama de clase
nNota Si ha seleccionado el icono de su proyecto en el Explorador de soluciones antes de insertar
un diagrama de clase (como se muestra
en la Figura 2-16), el IDE automáticamente agregar un diseñador visual para cada tipo en los
archivos de código. Si no se selecciona
el icono del proyecto antes de insertar un archivo de diagrama de clase, se le presentará con un
diseñador de vacío. En este punto,
puede arrastrar los archivos *. vb desde el Explorador de soluciones y soltarlos en el diseñador para
ver cada tipo.
Una vez que usted lo hace, usted encontrará los iconos de clase que representan a las clases del
proyecto actual. Si
haga clic en la imagen de flecha, puede mostrar u ocultar los miembros del tipo (ver Figura 2.17).
Ten en cuenta que
Visual Studio 2008 le mostrará todos los miembros en el proyecto actual de forma predeterminada.
Si desea eliminar
un elemento determinado en el diagrama, simplemente haga clic derecho y seleccione Eliminar en
el menú contextual (esto
No elimine el archivo de código relacionado).
Figura 2-17. El diagrama de clase espectador
Esta utilidad trabaja en conjunto con otros dos aspectos de Visual Studio 2008: Detalles de la clase
ventana (activa mediante el menú Ver "Otras Windows) y el Diseñador de clases Caja de
herramientas (activa
utilizando el elemento de menú Ver äToolbox). La ventana Detalles de clase no sólo le muestra la
detalles del elemento seleccionado en el diagrama, sino también le permite modificar los actuales
miembros
y los miembros de insertar nuevos sobre la marcha (véase la Figura 2-18).
Figura 2-18. La ventana Detalles de clase
El Diseñador de clases Caja de herramientas (vea la Figura 2-19) le permite insertar nuevos tipos en
el proyecto
(y crear relaciones entre estos tipos) visualmente. (Tenga en cuenta que debe tener un diagrama de
clase
como la ventana activa para ver esta caja de herramientas.) Al hacerlo, el IDE crea
automáticamente nuevas
VB 2008 definiciones de tipos en el fondo.
Figura 2-19. La caja de herramientas Diseñador de clases
A modo de ejemplo, arrastre una nueva clase del Diseñador de clases Cuadro de herramientas al
Diseñador de clases.
El nombre de esta clase de coches en el cuadro de diálogo resultante. Ahora, utilizando la ventana
Detalles de clase, agregue un público
String Petname campo denominado (véase la Figura 2-20).
Ahora, agregue otra nueva clase para el diseñador llamado Sportscar. A continuación, seleccione el
icono de la herencia
de la Clase Designer Toolbox y haga clic en el icono de Sportscar. A continuación, mueva el cursor
del ratón en la parte superior
del icono de la clase de coche y haga clic en el ratón. Si realiza estos pasos correctamente, que
acaba de
derivados de la clase Sportscar de coches (ver Figura 2-21).
Figura [Link] que se derivan de una clase existente
Para completar este ejemplo, actualizar la clase Sportscar generado con un método público llamado
PrintPetName () de la siguiente manera (no preocuparse por la sintaxis en este punto, usted cavar
en el
detalles de diseño de clases a partir del próximo capítulo):
Cada nodo define el conjunto de tipos en un espacio dado, los miembros de un determinado tipo, y
la
parámetros de un miembro determinado. Por otra parte, al ver la página de ayuda para un mismo
tipo, se le
se dijo el nombre de la asamblea y espacio de nombres que contiene el tipo en cuestión (que se
encuentra en el
parte superior de dicha página). Al leer el resto de este libro, supongo que va a sumergirse en
esta muy, muy nodo fundamental para leer sobre los detalles adicionales de la entidad objeto de
examen.
nNota Me gustaría subrayar una vez más la importancia de trabajar con la suministrada. NET
Framework 3.5 documentación.
Cuando usted está aprendiendo un marco nuevo y lenguaje de programación, tendrá que subirse
las mangas
y cavar en los detalles. Ningún libro, independientemente de su tamaño, puede cubrir todos los
detalles de la creación de aplicaciones con Visual
Basic 2008 o la plataforma. NET. Por lo tanto, si se encuentra con un tipo o miembro que desee
obtener más información
sobre como se trabaja a través de este texto, asegúrese de aprovechar el sistema de ayuda!
El papel de la compatibilidad de Visual Basic 6.0
Asamblea
Como lo más seguro dado cuenta a lo largo de este libro, Visual Basic 2008 es un
revisión a fondo de VB6 que a menudo es mejor considerar simplemente VB 2008 como un lenguaje
nuevo en el
familiar básica, en lugar de "Visual Basic 7.0." Con este fin, muchos familiares VB6 funciones,
enumeraciones,
tipos definidos por el usuario y los objetos intrínsecos están en ninguna parte se encuentra
directamente en el. NET
bibliotecas de clases base.
Aunque esto es técnicamente cierto, todos los de Visual Basic 2008 proyecto creado con Visual
Studio 2008
(Así como Visual Basic 2008 Express Edition) de forma automática hace referencia a un particular.
NET
llamado [Link], que define los tipos que proporcionan la misma funcionalidad de
la
legado VB6 construcciones. Al igual que cualquier montaje, [Link] se compone de
numerosas
espacios de nombres que agrupan ideas afines tipos (ver Figura 2.25).
Figura 2-25. El conjunto de compatibilidad [Link] VB6
Además, cada uno de estos espacios de nombres están automáticamente disponibles para cada
archivo *. vb en su
del proyecto. Teniendo en cuenta este punto, no es necesario añadir explícitamente un conjunto de
instrucciones Imports para acceder
de sus tipos. Por lo tanto, si desea hacerlo, usted todavía puede hacer uso de diversos VB6-ismos,
como el
MsgBox () para mostrar un cuadro de mensaje simple:
Note como parece que está llamando a un método global llamada MsgBox () directamente dentro de
Main (). En realidad, el MsgBox () es un miembro de un módulo de VB 2008 Interacción con nombre
que se
definido en el espacio de nombres [Link] (véase la Figura 2-26).
Figura 2-26. El espacio de nombres [Link] contiene el tipo de interacción.
Como se verá en el capítulo 3, un módulo de Visual Basic 2008 es similar a un archivo *. bas VB6,
en el que los miembros
definido en un módulo puede ser llamado directamente, sin necesidad de prefijo el nombre de la
definición
módulo. Sin embargo, si usted fuera a prefijo del módulo de interacción con el MsgBox () función, el
programa
que funcionan de forma idéntica:
Module Module1
Sub Main()
[Link]("Everything old is new again!")
End Sub
End Module
Ahora bien, aunque se puede sentir un poco tranquilizador saber que la funcionalidad de VB6
todavía puede ser simulado
dentro de los nuevos proyectos de Visual Basic 2008, le recomiendo que evite el uso de este tipo en
posible. En primer lugar, la escritura parece estar en la pared sobre la vida de VB6, en el que
La propia Microsoft tiene previsto eliminar gradualmente el apoyo a VB6 con el tiempo, y teniendo
en cuenta esto, no se puede garantizar
que esta asamblea de compatibilidad se apoyará en el futuro.
Además, las bibliotecas de clases base de ofrecer numerosos tipos administrados que ofrecen una
funcionalidad mucho más
que el (pronto-a-ser) el legado lenguaje de programación Visual Basic 6. Teniendo en cuenta estos
puntos, este texto
no hacer uso de la capa de compatibilidad de VB6. Por el contrario, que se centrará en el
aprendizaje. NET base
bibliotecas y la forma de interactuar con este tipo utilizando la sintaxis de Visual Basic 2008.
Summary
So as you can see, you have many new toys at your disposal! The point of this chapter was to provide
you with a tour of the major programming tools a VB 2008 programmer may leverage during the
development process. You began the journey by learning how to generate .NET assemblies using
nothing other than the free VB 2008 compiler and Notepad.
You also examined three feature-rich IDEs, starting with the open source SharpDevelop, followed
by Microsoft’s Visual Basic 2008 Express and Visual Studio 2008. While this chapter only
scratched the surface of each tool’s functionality, you should be in a good position to explore
your chosen IDE at your leisure. The chapter wrapped up by describing the role of Microsoft.
[Link] and mentioned a number of open source .NET development tools that extend
the functionality of your IDE of choice.
Core VB Programming
Constructs
Programación VB 2008 Construcciones,
Parte I
Este capítulo comienza su investigación formal del lenguaje de programación Visual Basic 2008. No
ser conscientes de este capítulo y el siguiente se presentan una serie de temas independiente del
tamaño de un bocado debe
sentirse cómodos con lo que exploras. NET Framework. A diferencia de los capítulos restantes de
este texto,
no hay ningún tema predominante en los próximos dos capítulos más allá de examinar las
características sintácticas básicas
de VB 2008.
Dicho esto, la primera tarea es comprender el papel de la palabra clave del módulo como
así como el formato de punto de partida de un programa: el método Main (). A continuación, se
investigará la
intrínseca VB 2008 los tipos de datos (y sus tipos equivalente en el espacio de nombres System),
así como diversas
datos de las rutinas de conversión de tipo. Nos terminar examinando el conjunto de los operadores,
la iteración construcciones,
y construcciones de decisión para construir declaraciones código válido.
El papel del tipo de módulo
Visual Basic 2008 admite una programación específica la construcción de un módulo llamado, que
se declara
con la palabra clave del módulo. Por ejemplo, al crear un proyecto Aplicación de consola con Visual
Studio 2008, recibirá automáticamente un archivo *. vb que contiene el siguiente código:
Module Module1
Sub Main()
End Sub
End Module
Bajo el capó, la palabra clave del módulo define un tipo de clase, con algunas excepciones notables.
En primer lugar
y ante todo, una función pública, el subprograma, propiedad o variable miembro define en el
ámbito de aplicación de un módulo se expone como un "miembro compartido" que se puede
acceder directamente a través de una aplicación.
En pocas palabras, los miembros compartidos permiten simular un alcance global dentro de la
aplicación
que es más o menos análoga a la funcionalidad proporcionada por un archivo *. bas VB6 (los
detalles sobre compartida
miembros se pueden encontrar en el capítulo 5).
Dado que los miembros de un módulo son directamente accesibles, no es necesario anteponer el
nombre del módulo cuando se accede a su contenido. Para ilustrar el trabajo con módulos, crear
una nueva consola
Proyecto de aplicación (llamada FunWithModules) y actualizar el archivo de código inicial de la
siguiente manera:
Module Module1
Sub Main()
' Show banner.
DisplayBanner()
' Get user's name and say howdy.
GreetUser()
End Sub
Sub DisplayBanner()
' Get the current color of the console text.
Dim currColor As ConsoleColor = [Link]
' Set text color to yellow.
[Link] = [Link]
[Link]("******* Welcome to FunWithModules *******")
[Link]("This simple program illustrates the role")
[Link]("of the Module type.")
[Link]("*****************************************")
' Reset to previous color of your console text.
[Link] = currColor
[Link]()
End Sub
Sub GreetUser()
Dim userName As String
[Link]("Please enter your name: ")
userName = [Link]()
[Link]("Hello there {0}. Nice to meet ya.", userName)
End Sub
End Module
Figure 3-1 shows one possible output.
Sub Main()
' Show banner.
[Link]()
' Get user's name and say howdy.
[Link]()
End Sub
En el ejemplo actual, esto es un poco completamente opcional de la sintaxis (no hay diferencia en
términos de rendimiento o el tamaño de la asamblea compilado). Sin embargo, se supone que iban
a definir un
nuevo módulo (MyModule) en el proyecto (dentro de la misma *. vb, por ejemplo), que define un
idéntica GreetUser formado () método:
Module MyModule
Public Sub GreetUser()
[Link]("Hello user...")
End Sub
End Module
Si usted quiere hablar [Link] () desde dentro del método Main (), ahora tendría que
el prefijo explícitamente el nombre del módulo. Si no se especifica el nombre del módulo, el Main ()
método llama automáticamente al [Link] () método, como lo es en el ámbito mismo
módulo como
Main ():
Sub Main()
' Show banner.
DisplayBanner()
' Call the GreetUser() method in MyModule.
[Link]()
End Sub
Una vez más, entienden que cuando un proyecto está definido por varios módulos, no se
necesarios para el prefijo del nombre del módulo a menos que los métodos son ambiguos. Por lo
tanto, si su actual
proyecto fueron: definir un nuevo módulo denominado MyMathModule:
Module MyMathModule
Function Add(ByVal x As Integer, ByVal y As Integer) As Integer
Return x + y
End Function
Function Subtract(ByVal x As Integer, ByVal y As Integer) As Integer
Return x - y
End Function
End Module
Sub Main()
...
' Add some numbers.
[Link]("10 + 10 is {0}.", Add(10, 10))
' Subtract some numbers
' (module prefix optional).
[Link]("10 - 10 is {0}.", [Link](10, 10))
End Sub
nNota Si usted es nuevo en la sintaxis de los lenguajes BASIC, estar seguro de que el capítulo 4 se
cubren los detalles de
las funciones del edificio y subrutinas.
Con el fin de informVisual Studio 2008 con el nombre nuevo módulo, se le requiere para restablecer
el
"objeto de inicio"por medio de la ficha Aplicación del cuadro de diálogo Mi proyecto, como se ve en
la Figura 3-2.
Una vez que lo hace, usted será capaz de compilar la aplicación sin errores.
Figura 3-2. Restablecer el nombre del módulo
nNota como un acceso directo, también puede cambiar el nombre de su módulo inicial, cambiando
el nombre del archivo utilizando la definición de la
Ventana Explorador de soluciones de Visual Studio. Esto automáticamente "reiniciar" el objeto de
inicio
Module MyModule
Public UserName As String
Sub GreetUser()
[Link]("Hello, {0}.", UserName)
End Sub
End Module
Al igual que cualquier miembro de módulo, el nombre de usuario puede acceder directamente por
cualquier parte de su solicitud.
Por ejemplo:
Sub Main()
...
' Set user's name and call second form of GreetUser().
UserName = "Fred"
[Link]()
...
End Sub
Class Program
' Unlike Modules, members in a class are not
' automatically shared. Thus, we must declare Main()
' with the Shared keyword.
Shared Sub Main()
End Sub
End Class
Si intenta compilar el programa, usted recibirá otra vez un error del compilador que le informa
que el método Main () no puede ser localizado. Uso de la ficha Aplicación del cuadro de diálogo Mi
proyecto,
Ahora puede especificar que el programa objeto de inicio del programa (como ya se muestra en la
Figura 3-2).
Class Program
Shared Sub Main()
[Link]("***** Fun with Main() *****")
' Get command-line args.
Dim args As String() = [Link]()
Dim s As String
For Each s In args
[Link]("Arg: {0}", s)
Next
End Sub
End Class
Suponiendo que usted ha construido su aplicación, si usted fuera a ejecutar ahora la aplicación en el
símbolo del
del sistema, se puede alimentar en sus argumentos de la misma manera como lo hizo cuando se
trabaja
con [Link] (ver Figura 3-3).
Figura 3-3. Procesamiento de la línea de comandos argumentos
Por supuesto, depende de usted para determinar que los argumentos de línea de comandos de su
programa
responder y la forma en que debe tener el formato (por ejemplo, con un - o un prefijo /). Aquí
simplemente se pasa en
una serie de opciones que se imprime en el símbolo del sistema. Supongamos, sin embargo, fueron
la creación de
un nuevo juego de video y programar la aplicación para procesar una opción llamada-godmode. Si
el
usuario inicia la aplicación con la bandera, ya sabes que el usuario es en realidad un tramposo, y
usted puede tener una
curso de acción apropiado.
Independientemente de cómo se defina el método Main (), el objetivo sigue siendo el mismo:
interactuar con
los tipos que llevan a cabo la funcionalidad de su aplicación. Una vez que la declaración final en el
Método main () se ha ejecutado, Main () las salidas y su aplicación termina.
Especificar argumentos de línea de comandos con Visual Studio 2008
Por último, permítanme señalar que Visual Studio 2008 le permite especificar de entrada de línea de
comandos
argumentos, que puede ser muy útil cuando las pruebas y la depuración de la aplicación. En lugar
de
tener que ejecutar la aplicación en una línea de comandos para alimentar argumentos en forma
manual, puede hacerla
especificar los argumentos utilizando la ficha Depurar del cuadro de diálogo Mi proyecto, que se
muestra en la Figura 3.4 (véase la
La línea de comandos área de texto argumentos).
El tipo para el Medio Ambiente define a los miembros que no sean los que se ven en el ejemplo
anterior.
Tabla 3-1 documentos algunas propiedades adicionales de interés, sin embargo, asegúrese de
revisar la
. NET Framework 3.5 SDK para más detalles
El [Link] clase
Casi todos los ejemplos de aplicaciones creadas en el transcurso de los capítulos iniciales de este
texto
hacen un uso extensivo de la clase [Link]. Si bien es cierto que una consola de interfaz
de usuario (a veces
llama CUI) no es tan atractivo como una interfaz gráfica de usuario (GUI) o front-end basado en
web,
restricción de los primeros ejemplos de programas de la consola nos permitirá mantener el foco en
la sintaxis de
Visual Basic y los aspectos centrales de la plataforma. NET, en lugar de tratar con las
complejidades de la
GUIs edificio.
Como su nombre lo indica, la clase Console encapsula la entrada, salida y error de secuencia de
manipulaciones
para aplicaciones basadas en la consola. Tabla 3-2 se enumeran algunas (pero definitivamente no
todos) de los miembros del
de interés.
Table 3-2. Select Members of [Link]
Member Meaning in Life
Beep() This method forces the console to emit a beep of a specified frequency and
duration.
BackgroundColor These properties set the background/foreground colors for the current
ForegroundColor output. They may be assigned any member of the ConsoleColor enumeration.
BufferHeight These properties control the height/width of the console’s buffer area.
BufferWidth
Title This property sets the title of the current console.
WindowHeight These properties control the dimensions of the console in relation to the
WindowWidth established buffer.
WindowTop
WindowLeft
Clear() This method clears the established buffer and console display area.
Sub Main()
[Link]("***** Fun with Console IO *****")
' Echo some information to the console.
[Link]("Enter your name: ")
Dim s As String = [Link]()
[Link]("Hello, {0}", s)
[Link]("Enter your age: ")
s = [Link]()
[Link]("You are {0} years old", s)
End Sub
Sub Main()
...
' Specify string placeholders and values to use at
' runtime.
Dim theInt As Integer = 90
Dim theDouble As Double = 9.99
Dim theBool As Boolean = True
[Link]("Value of theInt: {0}", theInt)
[Link]("theDouble is {0} and theBool is {1}.", _
theDouble, theBool)
End Sub
El primer parámetro a WriteLine () representa una cadena literal que contiene marcadores de
posición opcional
designada por {0}, {1}, {2}, y así sucesivamente. Ser muy consciente de que el primer número
ordinal de un curlybracket
marcador de posición siempre comienza con 0. El resto de parámetros a WriteLine () son
simplemente el
valores que se inserta en los marcadores de posición respectiva (en este caso, un número entero,
un doble, y un
Boolean).
nNota Si usted tiene un menor número de marcadores de posición de número único rizado el
soporte de los argumentos de relleno, que se
recibir una excepción FormatException en tiempo de ejecución.
También es permisible para un marcador de posición dada a repetir dentro de una cadena
determinada. Por ejemplo, si
son un fan de los Beatles y queremos construir la cadena "9, Número 9, Número 9", escribiría:
También sabemos que es posible la posición de cada marcador de posición en cualquier lugar
dentro de una cadena literal,
y no es necesario seguir una secuencia en aumento. Por ejemplo, consideremos el siguiente
fragmento de código:
Estos caracteres de formato son el sufijo marcador de posición para un valor determinado, utilizando
los dos puntos testigo (por ejemplo,
{0: C}, {1: d}, {2: X}, y así sucesivamente). Ahora, actualizar el método Main () con la siguiente
lógica:
Aquí estamos definiendo numerosos literales de cadena, cada uno de ellos tiene un segmento no se
conoce hasta
tiempo de ejecución. En tiempo de ejecución, el carácter de formato se utiliza internamente por el
tipo de consola para imprimir
la cadena completa en el formato deseado.
Uso de cadenas de formato [Link] ()
Tenga en cuenta que el uso de los personajes. NET de formato de cadena no se limita a programas
de la consola!
Estos indicadores puede utilizar el mismo al llamar a la [Link] compartido () método. Esto
puede ser útil
cuando se necesita para construir una cadena que contiene valores numéricos en la memoria para
su uso en cualquier aplicación
tipo (formularios Windows Forms, [Link], servicios web, XML, etc). Para ilustrar, la actualización
principal () con el
siguiente código final:
Cada uno de los tipos numéricos (Short, Integer, etc), así como el tipo de mapa a una Fecha
estructura correspondiente en el espacio de nombres System. En pocas palabras, las estructuras
son "tipos de valor" asignado
en la pila. Por otra parte, String y Object son "tipos de referencia", es decir, el
variable se le asigna en el montón administrado. Usted examinará todos los detalles de valor y
referencia
tipos en el capítulo 12, sin embargo, por el momento, sólo tiene que entender que los tipos de valor
se puede asignar
en la memoria rápidamente y tienen una vida muy fijo y predecible.
Declaración de variables e inicialización
Cuando se declara un tipo de datos como una variable local (por ejemplo, una variable dentro de un
ámbito miembro), que
hacerlo a través de la Dim y As palabras clave. A modo de algunos ejemplos:
Sub MyMethod()
' Local variables are declared as follows:
' Dim variableName As dataType
Dim age As Integer
Dim firstName As String
Dim isUserOnline As Boolean
End Sub
Uno de los cambios sintácticos útil que se ha producido con el lanzamiento de la RED. platformis la
posibilidad de declarar una sucesión de variables en una sola línea de código. VB6 también apoyó
esta capacidad, pero
la semántica fuera un poco intuitivas y una fuente de errores sutiles. Por ejemplo, en VB6, si
no establece explícitamente los tipos de datos de cada variable, las variables no cualificados se
establece en el VB6
Variante tipo de datos:
Este comportamiento es más que un poco molesto, ya que la única forma en que son capaces de
definir múltiples
las variables del mismo tipo en VB6 es escribir el siguiente código poco redundante:
Sub MyOtherMethod()
' In this line of VB 2008 code, varOne
' and varTwo are both of type Integer!
Dim varOne, varTwo As Integer
End Sub
En una nota final, VB 2008 ahora admite la posibilidad de asignar un valor a una variable
directamente en el
punto de la declaración. Para entender el significado de esta nueva pieza de la sintaxis, tenga en
cuenta el hecho de que
en VB6, que se vieron obligados a escribir lo siguiente:
' VB6 code.
Dim i As Integer
i = 99
Sub MyMethod()
' Local data can be initialized at the time of declaration:
' Dim variableName As dataType = initialValue
Dim age As Integer = 36
Dim firstName As String = "Sid"
Dim isUserOnline As Boolean = True
End Sub
Tenga en cuenta que cada uno de estos tipos en última instancia se deriva de [Link], que
define un conjunto de
métodos (ToString (), igual a (), GetHashCode (), y así sucesivamente), común a todos los tipos en
la base. NET
bibliotecas de clases (estos métodos están detallados en el capítulo 6).
También tenga en cuenta que los tipos de datos numéricos se derivan de una clase denominada
[Link]. Descendientes
de ValueType se asignan automáticamente en la pila y por lo tanto tienen una vida muy predecible
y son muy eficientes. Por otro lado, los tipos que no tienen [Link] en su herencia
cadena (como [Link], [Link], [Link], [Link], y el sistema.
Delegado) no se asignan en la pila, pero en el montón de basura recogidas.
Sin entrar demasiado colgado en los detalles de [Link] y [Link] por el
momento
ser (de nuevo, más detalles en el capítulo 12), sólo tiene que saber que debido a que VB 2008 la
palabra clave (por ejemplo,
Entero) es la notación abreviada para el tipo de sistema correspondiente (en este caso,
System.Int32), el
siguiente es la sintaxis perfectamente legal, dado que System.Int32 (el VB 2008 entero) con el
tiempo deriva
de [Link], y por lo tanto puede invocar cualquiera de sus miembros del sector público:
Sub Main()
' A VB 2008 Integer is really a shorthand for System.Int32,
' which inherits the following members from [Link].
[Link]([Link]()) ' Prints the type's hash code value.
[Link]([Link](23)) ' Prints False
[Link]([Link]()) ' Returns the string value "12"
[Link]([Link]()) ' Prints System.Int32
End Sub
Intrínseca de tipos de datos y la nueva palabra clave
Todos los tipos de datos intrínsecos apoyar lo que se conoce como un constructor predeterminado
(véase el capítulo 5). En pocas palabras,
esta característica le permite crear una variable usando la palabra clave New, que se ajusta
automáticamente a la variable
a su valor predeterminado. Aunque es más engorroso de usar la palabra clave New cuando se crea
una
variable básica tipo de datos, el siguiente es sintácticamente bien formada VB 2008 Código:
En una nota relacionada, también se puede declarar una variable de tipo de datos intrínsecos con el
tipo completo
nombre a través de cualquiera de estos métodos:
Por supuesto, las posibilidades de que va a definir un simple booleano con el nombre de tipo
completo o Nuevo
palabra clave en el código es prácticamente nula. Es importante, sin embargo, recordar siempre que
el VB 2008
palabras claves para los tipos de datos simples son poco más que una notación abreviada para los
tipos reales en el sistema
espacio de nombres.
Experimentar con Tipos de datos numéricos
Para experimentar con las propiedades intrínsecas de VB tipos de datos de 2008, crear una nueva
aplicación de consola denominada
BasicDataTypes. En primer lugar, entender que los tipos numéricos de. NET de apoyo y MaxValue
MinValue propiedades que proporcionan información sobre la gama de un determinado tipo puede
almacenar. Por
ejemplo:
Sub Main()
[Link]("***** Fun with Data Types *****")
[Link]("Max of Integer: {0}", [Link])
Además de los MinValue / propiedades MaxValue, un tipo determinado sistema numérico puede
definir
miembros adicionales de utilidad. Por ejemplo, el tipo [Link] le permite obtener los valores
de
épsilon y el infinito (que pueden ser de interés para aquellos de ustedes con un toque matemático):
nNota Cuando se habilita Option Strict (que se describe en la sección "La comprensión de Option
Strict" más adelante en este
capítulo) para su proyecto, el compilador de VB 2008 exige que la tachuela en la c sufijo a un tipo de
datos Char cuando
asignación de un valor.
El tipo [Link] le proporciona una gran cantidad de funcionalidad más allá de la capacidad de
mantener
un solo punto de datos de caracteres. Utilizando los métodos comunes de [Link], que son
capaces de determinar
si un carácter dado es numérica, alfabética, un punto de puntuacion, o lo que sea. Para
ilustran, actualizar Main () con las siguientes afirmaciones:
Como se ilustra en el fragmento de código anterior, los miembros de [Link] tienen dos
convenciones de llamada:
un solo carácter o una cadena con un índice numérico que especifica la posición de la
carácter a prueba.
De análisis de valores de datos de cadena
Los tipos de datos de. NET proporciona la capacidad para generar una variable de su tipo
subyacente dado un texto
equivalente (por ejemplo, el análisis). Esta técnica puede ser muy útil cuando se desea convertir un
bits de los datos introducidos por el usuario (por ejemplo, una selección de un cuadro de lista
basado en GUI desplegable) en un valor numérico
valor. Tenga en cuenta la lógica de análisis siguientes:
Como se ha mencionado, String es un tipo de datos nativa en VB 2008. Al igual que todos los tipos
intrínsecos, el VB 2008 String
palabras clave en realidad es una notación abreviada para un tipo de verdad en la biblioteca. NET
de la clase base, que en este
caso es [Link]. Por lo tanto, usted puede declarar una variable de cadena utilizando
cualquiera de estos
notaciones:
[Link] proporciona una serie de métodos que se puede esperar de tal clase de utilidad,
incluidos los métodos que devuelven el número de caracteres de la cadena, buscar subcadenas
dentro de la
cadena actual, convertir hacia y desde mayúsculas y minúsculas, y así sucesivamente. Tabla 3-5 se
enumeran algunas (pero
no todos) de los miembros de interés.
Module Program
Sub Main()
[Link]("***** Fun with Strings *****")
Dim firstName As String = "June"
[Link]("Value of firstName: {0}", firstName)
[Link]("firstName has {0} characters.", [Link])
[Link]("firstName in uppercase: {0}", [Link]())
[Link]("firstName in lowercase: {0}", [Link]())
Dim myValue As Integer = 3456787
[Link]("Hex vaule of myValue is: {0:X}", myValue)
[Link]("Currency value of myValue is: {0:C}", myValue)
End Sub
End Module
Observe cómo los métodos de la ToUpper () y ToLower () (así como la propiedad Length) no han
llevado a cabo como miembros para compartir, y por lo tanto llamar directamente desde un objeto
String.