Contenido de un vistazo 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 PARTE 4 Programación con. NET nCHAPTER 15 Introducción. NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 nCHAPTER 16 Tipo de reflexión, el enlace, y la programación basada en atributos. . . . 483 nCHAPTER 17 Procesos, dominios de aplicación, y contextos de objetos. . . . . . . . . . . . . . . . . . . . . . . 517 nCHAPTER 18 Creación de aplicaciones multiproceso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 nCHAPTER 19. NET Interoperabilidad Asambleas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 PARTE 5 nnn presentar el. Bibliotecas de red de clase de base nCHAPTER 20 y manipulación de archivos de Directorio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607 nCHAPTER 21 Presentación de la serialización de objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633

nCHAPTER ADO.NET 22 Parte I: La Capa de Conexión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 nCHAPTER 23 ADO.NET Parte II: La capa de desconectado. . . . . . . . . . . . . . . . . . . . . . . . . . . 705 nCHAPTER 24 Programación con el API de LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759 nCHAPTER 25 Introducción a Windows Communication Foundation. . . . . . . . . . . . . . . . . . . 795 nCHAPTER 26 Introducción a Windows Workflow Foundation. . . . . . . . . . . . . . . . . . . . . . . . . 843 PARTE 6 nnn de aplicaciones de escritorio con Windows Forms nCHAPTER 27 Introducción a Windows Forms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883 nCHAPTER 28 de representación gráfica de datos con GDI +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929 nCHAPTER 29 Programación con formularios Windows Forms. . . . . . . . . . . . . . . . . . . . . . . . 983 PARTE 7 n n n de aplicaciones de escritorio con WPF nCHAPTER 30 Introducción a Windows Presentation Foundation y XAML. . . . . . . . . . . 1047 nCHAPTER 31 Programar con los controles de WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103 nCHAPTER 32 WPF representación gráfica 2D, recursos y temas. . . . . . . . . . . . . 1167 PARTE 8 nnn construcción de Aplicaciones Web con ASP.NET nCHAPTER construcción de 33 páginas Web ASP.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215 nCHAPTER 34 Web ASP.NET, Temas y páginas maestras. . . . . . . . . . . . . . . . 1261 nCHAPTER 35 de estado de ASP.NET Técnicas de Gestión. . . . . . . . . . . . . . . . . . . . . . . . . . 1297 ÍNDICE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1331

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 Ildasm.exe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 (vbc.exe). . . . . . . . . . . . . . . . . . . . . . . . . . 36 La construcción de aplicaciones con Visual Basic 2008 vbc.exe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Trabajar con archivos de respuesta de vbc.exe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Edificio. NET Usando SharpDevelop. . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Edificio. NET utilizando Visual Basic 2008 Express. . . . . . . . . . . . . . . . 46 vi Edificio. NET utilizando Visual Studio 2008. . . . . . . . . . . . . . . . . . . . . . 47 El papel de la Asamblea de Visual Basic Compatibility 6.0. . . . . . . . . . . . . . . . . . . 59 Un catálogo parcial de adicionales. Herramientas de desarrollo NET. . . . . . . . . . . . . . . . . . . . 61 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 PARTE 2 n n n la base de programación VB Construye nCHAPTER tres construcciones de programación VB 2008, primera parte. . . . . . . . . . . . . . . . . . . . 65 El papel del tipo de módulo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 El papel del método principal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Un interesante Aparte: Algunos miembros adicionales de la Clase System.Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 El System.Console clase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Tipos de datos del sistema de notación abreviada y VB. . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Comprender el tipo System.String. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Estrechamiento (explícito) y ampliación (implícita) Conversiones de tipos de datos. . . . . . . . . . 89 Construcción de Visual Basic 2008 declaraciones de código. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 VB 2008 las construcciones de control de flujo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 VB iteración Construye 2008. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 nCHAPTER cuatro construcciones de programación VB 2008, Parte II. . . . . . . . . . . . . . . . . . . 103 Definición de subrutinas y funciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Entender sobrecarga miembros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 Manipulación de matriz en Visual Basic 2008. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Entender VB 2008 enumeraciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Al presentar el VB 2008 Tipo de estructura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 nCHAPTER 5 Diseño de encapsulado de clase Tipos. . . . . . . . . . . . . . . . . . . . . . . . 129 Al presentar el VB 2008 tipo de clase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Comprensión de Constructores de la Clase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 El papel de la Palabra de mí. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 Entendiendo la palabra clave compartida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

Definición de los pilares de la programación orientada a objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Visual Basic 2008 modificadores de acceso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 El primer pilar: Servicios VB 2008 de encapsulación. . . . . . . . . . . . . . . . . . . . . . . 154 Comprensión de datos constante. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Básicos de los campos de sólo lectura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Cómo entender las definiciones de tipo parcial. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 La documentación de VB 2008 el código fuente a través de XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Visualización de los frutos de nuestro trabajo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 nCHAPTER 6 Entendimiento Herencia y polimorfismo. . . . . . . . . . . . . 173 La mecánica básica de la herencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 La revisión de Visual Studio 2008 diagramas de clase. . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 El Segundo Pilar: Los detalles de la herencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Programación para la Contención / Delegación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 El tercer pilar: Apoyo polimórfica VB del 2008. . . . . . . . . . . . . . . . . . . . . . . . . 187 Entender clase base / derivada reglas de conversión de la clase. . . . . . . . . . . . . . . . . . . 198 La clase padre Maestro: System.Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 nCHAPTER 7 Entendimiento estructurado de excepciones. . . . . . . . . . . . . 207 Oda a los errores, los errores y excepciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 El papel de. Control de excepciones NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 El ejemplo más simple posible. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 Configuración del estado de una excepción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 Sistema de Nivel excepciones (System.SystemException). . . . . . . . . . . . . . . . . . . . . 218 Las excepciones de nivel de aplicación (System.ApplicationException). . . . . . . . . . . . . . . 219 Procesamiento de múltiples excepciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 El último bloque. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 ¿Quién está tirando ¿Qué? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 El resultado de las excepciones no controladas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Depuración de las excepciones no controladas utilizando Visual Studio 2008. . . . . . . . . . . . . . . 228 Combinando VB6 Error de procesamiento y control de excepciones estructurado. . . . . . . . . . 230 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 nCHAPTER 8 Descripción de objetos de por vida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Clases, objetos y referencias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 Los fundamentos de la vida de objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 El papel de las raíces de la aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 Entender Generaciones de objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 El tipo de System.GC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 Edificio finalizables objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 Construcción de objetos desechables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Edificio finalizables y desechables Tipos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

. . .Collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 Entender Boxing y Unboxing Operaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Entender sobrecarga de operadores. . 313 Creación de Estructuras Genéricas (o clases). . . . . . . . . . . . . . . . . . . . . 255 Descripción de los tipos de interfaz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Crear métodos genéricos. . . . . . . 298 La seguridad de tipos y establecimiento inflexible de tipos de colecciones. . . . . . . . . . . . . . . . . . . . . . 339 Definición de una "Prim-y correcta" de eventos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Entendimiento (y uso) Eventos. . . . . . . 348 Visual expresiones lambda de base. . . . . . . 273 Construcción de objetos comparables (IComparable). . . 257 La implementación de una interfaz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 Creación de interfaces genéricas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 Resolución de conflictos de nombres con la palabra clave Implements. . . . . . . . . . . . . . . . . . .Nullable (Of T) Tipo genérico. 365 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 nCHAPTER 10 colecciones. . . . . . . . . . . . . . . . . . . . . . . . . .Specialized. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . genéricos y tipos de datos que aceptan valores NULL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 Definición de interfaces personalizadas. . . . . . . 327 El ejemplo más simple posible Delegado. . . . . . . . . . . . . . . 302 El espacio de nombres System. . .Collections. . . . . . . . . . . . . . . 291 Los tipos no genéricos de System. . eventos y expresiones lambda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 nCHAPTER 12 sobrecarga de operadores y rutinas de conversión personalizados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Collections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Personalización del proceso de registro de eventos. . . . . . . . . 331 La renovación de los coches tipo con los delegados. . . . . . . . . . . . . . . . . . . . . . . Delegado NET. . . . 280 Uso de interfaces como un mecanismo de devolución de llamada. . . . . . . . . . . . 352 Resumen. . . . . . . . . . . . . . . . . . . . . . . 291 Espacio de nombres System. . . . . . . . . . . . . . 326 nCHAPTER 11 delegados. . . . 359 Los detalles de los tipos de valor y tipos de referencia. . . . . . . . . . . . 324 Resumen. . . . . . . . . . . . . . . . . . . . . . . 345 Definición de eventos establecimiento inflexible de tipos. . . . . . . . . . . . . . 307 Descripción de los tipos de datos que aceptan valores NULL y la System. . . 323 Creación de delegados genéricos. . . . . . . . . . . . . . . . . . . . . . 327 Descripción de los tipos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .PARTE 3 n n n avanzada de programación VB Construye nCHAPTER 9 Trabajar con tipos de interfaz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 Interactuar con los tipos de interfaces de apoyo. . . . . . . . . 268 Edificio Enumerable tipos (IEnumerable e IEnumerator). . . . . . .Generic. . . . . . . . 316 Creación de una colección genérica de encargo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. 448 Construcción y Utilización de un ensamblado de varios archivos. . . . . . . . . . . . . . . . . . . . . . . 477 Descripción de los elementos <codeBase>. . . . . . . . . . . . . 377 La palabra clave DirectCast VB. . . . . . . . . . . . . . . . NET. . . . . . . . . . . . . . . . NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Comprender la función de LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Configuration. . . . . . . . . . . . . . . . . . . el enlace. . . . . . 433 PARTE 4 n n n Programación con. . . . . . . . . . . . . . . 481 nCHAPTER 16 Tipo de reflexión. . . . . . . . . . . . 403 Resumen. . . . . . . . . . . . 437 Entender el formato de una Asamblea. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 El consumo de una Asamblea común. . . . . . . . . . . . . . . . . . . . . 374 Definición de rutinas de conversión implícita. . . . . . . . . . . . . . . . . . . . . . . . . . 500 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 El papel de los ensamblados. . . . . . . . . . . . . . . . . 457 Entender Asambleas privada. . . . . . . . . . . . . .Creación de rutinas de conversión personalizados. . . . . . . . . . . . . . 424 LINQ Consultas: Una isla para sí?. . . . . . . . . . . . . . . . . . . . . . 391 Comprender la sintaxis de objetos de inicializador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 Carga dinámica de Asambleas. . . . . . . . 460 Entender Asambleas compartido. . . . . . . . . . . . . . . . . . . . . . . 417 LINQ y las colecciones no genéricas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 Configuración de Asambleas compartido. . . . . . . . . . . . . . . . . . . . . . . 483 La necesidad de metadatos tipo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 Comprender la reflexión. . . . . . . . . . . . . . . . . . . . . . . . . 381 nCHAPTER 13 VB 2008-Características del lenguaje específico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 La investigación de los operadores de LINQ VB consulta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 Resumen. . . . . . . . . . . . 496 Comprender el enlace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 nCHAPTER 14 Una introducción a LINQ. . . . 409 Un primer vistazo a las expresiones de consultas LINQ. 439 La construcción de encargo. . . . . . . . . . . . . . . . . . . . . . . NET nCHAPTER 15 Introducción. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NET espacios de nombres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383 Comprensión de tipos de datos implícitas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 Descripción de los tipos anónimos. . . . . . . . . . . . . . . . 478 El espacio de nombres System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 LINQ y colecciones genéricas. . . . . . . . . . . . . . . . . . . . . . . . y atributo en funciónProgramación. . . . . . . . . . . . . . . . . . . 432 Resumen. . . . . . . . . . . . . . . . . . . . . 378 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . 419 La representación interna de los operadores de consulta LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487 La construcción de un Visor de metadatos personalizados. . . . . . 498 Entender programación atribuido. . . . . . . . . . . . . 443 Construcción y consumo de una Asamblea de un solo archivo. . . . 383 Entender los métodos de extensión. . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 Entender Asambleas Editorial Política. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 Reflexionando sobre Asambleas compartido. . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . 510 Poner la reflexión. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NET Interoperabilidad. . . . . . . . . . . . . . . . . . . . . . . 565 Resumen. . . . . . . . . 590 Entender COM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 nCHAPTER 17 Procesos. . . . . . . 562 Comprender el ThreadPool CLR. . . 539 La naturaleza asíncrona de delegados. . . . . . . . . . . 571 El alcance de.Construcción de atributos personalizados. . . . . . . . . . . . . . . . . . . . . . . . . . . . 537 Una breve revisión del Delegado. . . 547 La clase System. NET. . . . . . . . . . . . . . . . . . . . . . . . dominios de aplicación. . . . . . . . . . . . . . 517 La interacción con los procesos de la Plataforma. . Tipos de redes. . 571 Un ejemplo sencillo de. . . . . . . 593 El papel de la Convención. . . . . . . . . . . . . . Interoperabilidad NET. . . . . . . . . . .Threading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 Entendimiento. . . NET. . . . . . . . . . . . . . . . . . . 595 El papel de la interfaz de clase. .0 cliente de prueba. . . . . . . 509 Reflexionando sobre Atributos Utilizando el enlace. . . . . . . . NET Interoperabilidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 nCHAPTER 18 Creación de aplicaciones multiproceso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 Programación con temporizador devoluciones de llamada. . . . . . . . . . . . . . . . 541 La invocación de un método de forma asincrónica. . . . . . . . 537 El Proceso / AppDomain / Contexto / Relación con hilo. . . . . . . . . . . . . . . . . . . .Thread. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . y el contexto. . . . 580 El enlace a la coclase CoCalc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 Resumiendo Procesos. . . . . . . . . . . . . . . . . . . . . 601 La construcción de un Visual Basic 6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 Comprender el contenedor que se puede llamar tiempo de ejecución. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Threading. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 El espacio de nombres System. 511 Creación de una aplicación extensible. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 Examinando el ensamblado de interoperabilidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . el enlace y atributos personalizados en perspectiva. . . . . . . . . . . . . . . 596 Creación de una. . . . . . . . . . . . . . . . . . . . . . . . . . . . NET dominio de aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . y contextos de objetos. . . . . . 578 El papel de IDL COM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507 Reflexionando sobre Atributos Utilizar enlace anticipado. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 597 Generación de la biblioteca de tipos y registro de los tipos. . . . . . . . . .. . . . . . . . . . 526 Entender límites objeto de contexto. . . . . . . . . . . . NET. . . . . . . . . . . . . . 569 nCHAPTER 19. . . . . . . . . . . . . . . . . . . NET para interoperabilidad COM. . . . . . 517 Revisión de los procesos tradicionales de Win32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 El tema de la concurrencia. . . . . . . . . . . . . . . . . . . . . 505 Asamblea de nivel (y el módulo de nivel) Atributos. . . . . . . NET Interoperabilidad Asambleas. . . . . . . . . . . . . . . . . . . . . 586 La construcción de una más interesante VB6 servidor COM. . . . . dominios de aplicación. . . . . . . . . . . 548 Programación Crear subprocesos secundarios. . . . . . . . . . . . . . . . . . 600 Examinar la información de tipo exportados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 La investigación de la Asamblea. . . . . . . . . . . . . . . 535 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 Resumen. . . . . . . . . . . . . . . . . . . 564 El papel del componente BackgroundWorker. . . .

. . . .. . . . . . . . . . . . . . . . . 637 Serialización de objetos de uso BinaryFormatter. . . . . . . . . . . . . . . . . . . . . . . . . . 653 Comprender los proveedores de datos ADO. 632 nCHAPTER 21 Presentación de la serialización de objetos. . . 658 Los tipos del espacio de nombres System. . . . . . . . . . 697 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 Los espacios de nombres adicionales de ADO. . . . . . . . . . . . . . . . . . . . . .NET 22 Parte I: La Capa de Conexión. . . . . . . . . . . . . . . . . . . . . . . . . . . 640 Serialización de objetos con el XmlSerializer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 Proveedores de abstracción de datos mediante interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 Programación "Ver" Archivos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 Creación de una consola de Front End de interfaz de usuario basada en. . . . . . . . . . . . . . . . . . . . . . . 614 Trabajo con la clase FileInfo. . . . 633 Configuración de los objetos de la serialización. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607 Explorando el espacio de nombres System. . . . . . . . . . . . . . . . 671 Entender la capa de Conexión ADO. . . . . . 636 Elegir un formateador de serialización. . . 629 Archivo asincrónico Realización de E / S. . . . . 692 Acceso a datos asincrónico con SqlCommand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . NET Base Bibliotecas nCHAPTER 20 y manipulación de archivos de Directorio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607 El Directorio (Info) y Archivo (Información) Tipos. . . . . .NET. 665 El proveedor de datos de ADO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 La construcción de una biblioteca de datos reutilizables de acceso. . . . . . . . . . . . . . . . . . . . . . . 641 La persistencia de las colecciones de objetos. . . . . . . . . . . . . 663 Creación de la base de datos AutoLot. . . . . . . . . . . . 603 PARTE 5 n n n Introducción a la clase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 Comprender la serialización de objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 Trabajar con el tipo de archivo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608 Trabajar con el tipo de DirectoryInfo. . . . . . . . . . . . . . . . . . . . . 618 La clase Stream Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .NET fábrica modelo. . . . . . . . . . . .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620 Trabajar con StreamWriters y StreamReaders. . . . . . . .602 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .NET. . . . . . . 653 Una definición de alto nivel de ADO. . 645 Resumen. . . . . . . . . . . . . . . . 644 Personalización del proceso de serialización. . . . . . 631 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 Trabajar con los lectores de datos. . . . . . . . . . . . . . . . . . . . 623 Trabajar con StringWriters y StringReaders. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 nCHAPTER ADO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .IO. . . . . . . . 609 Trabajar con el tipo de repertorio. . . . . . . . . . . . . . . . . 626 Trabajar con BinaryWriters y BinaryReaders. . . . . . . . . . . . . 639 Serialización de objetos con el SoapFormatter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 Trabajo con la clase DriveInfo tipo. . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824 Utilizando el servicio WCF Biblioteca de plantillas de proyecto. . . . . . . . . . . . . 715 Enlazar objetos DataTable a las interfaces de usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779 El soporte integrado de XML de Visual Basic 2008. . . . . . . . . . . . . . . . . . . . . . . . . 756 nCHAPTER 24 Programación con el API de LINQ. . . . . . . . . . . . . . . . . . . . . . 733 Navegando Multitabled objetos DataSet. . . . . . . . . . . . . . . . . 783 Creación de documentos XML mediante programación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 Trabajar con objetos DataRow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801 La investigación de las Asambleas de WCF Core. . 781 Creación de elementos de programación XML. . .Introducción a las transacciones de bases de datos. . . . . . . . . . . . . . . . . . . . . . . . . 720 Llenado de DataSet / Objetos DataTable Con los adaptadores de datos. . . . . . . . . . . . . 706 Trabajar con DataColumn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 Entender la capa desconectado de ADO. . . . . . . . . . . . . . . . . . . . 808 La construcción de un servicio WCF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .exe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753 Resumen. . . . . . . . . . . 765 Generación de clases de entidad Uso SqlMetal. . . . . . . . . . . . . . . . .NET. . . . . . . . . . . . . . . . . . . . . . . . 776 De programación con LINQ to XML. . . . . . . . . . . 759 El papel de LINQ to ADO. . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 Invocación de un servicio de forma asincrónica. . . . . . . . . . . 804 El Proyecto Estudio de WCF Plantillas de Visual. . . . . . . . . . . . . . . . . . . . . . . . . 736 Las herramientas de acceso a datos de Visual Studio 2008. . . . . . . 788 Navegando un documento XML en memoria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833 . . . 795 El papel del Fondo de Operaciones. . . . . . . . .dll. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807 El ABC del Fondo de Operaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 Un popurrí de la API de computación distribuida. . . . . . . 816 Aumento de la aplicación de cliente de WCF. . . . . . .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826 Que aloja el servicio de WCF como un servicio de Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 Comprender la función del conjunto de datos. . . . . . . . . . . . . . . . . . . . . . . 742 La disociación autogenerados Código de la capa de interfaz de usuario. . . . . . . . . . . . . . . 794 nCHAPTER 25 Introducción a Windows Communication Foundation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 De programación con LINQ to SQL. . . . . . . . . . . . . . . . . . . 759 De programación con LINQ to DataSet. . . . . 787 Carga y análisis de contenido XML. . . . . . . . . . . . . . . . . . . . . . . . 813 Que aloja el servicio WCF. . . . . . . . . . . . . . . . . . . . . . 698 Resumen. . . . . . . . 730 Revisión AutoLotDAL. . . . .NET Parte II: La capa de desconectado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770 Construcción de clases de entidad utilizando Visual Studio 2008. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703 nCHAPTER 23 ADO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 Trabajar con tablas de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805 La composición básica de una aplicación de WCF. . . . . . . . . . . . . . . . . . . . . 785 Generación de documentos de las consultas LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887 La anatomía de un formulario. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 943 La manipulación de las fuentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Drawing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953 Trabajar con plumas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843 Definir un proceso de negocio. . . . . . . . . 963 Arrastrar y Hit Prueba del control PictureBox. . . .Drawing Tipos de utilidad. . . . . . . . . . 856 La invocación de servicios Web dentro de flujos de trabajo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844 WF asambleas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883 Listado de el espacio de nombres System. . . . . . . . . . . . . . . . . . . . . . . 939 Definición de un valor de color. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . y Proyectos. 873 Unas breves palabras respecto a actividades personalizadas. . . . . . . . . . . . . . . . . .Diseño de contratos de WCF de datos. . . . . 930 El System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896 La construcción de aplicaciones para Windows con Visual Studio 2008. . 852 Examinando el motor de WF Hosting Código. . . . . . . . . . . . . . . . . . . . . . 927 nCHAPTER 28 de representación gráfica de datos con GDI +. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859 La construcción de una Biblioteca WF código reutilizable. . . . . . . . . . . . . . . . . . 935 La GDI + Sistemas de coordenadas. . . .Drawing2D. . . . . . . . . . . . . . 913 Trabajar con ToolStrips. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 891 La funcionalidad de la clase de formulario. . . 924 Resumen. . . . . 883 Trabajar con los tipos de formularios Windows Forms. . . . . . . . . . . . . . . . . . . . . . . . 919 Construir una aplicación MDI. . . . . . . . . . . . . . . . . . . . . . . . . 850 La construcción de un flujo de trabajo simple aplicación compatible. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 900 Trabajar con MenuStrips y ContextMenuStrips. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879 PARTE 6 n n n de aplicaciones de escritorio con Windows Forms nCHAPTER 27 Introducción a Windows Forms. . . . . . . . . . . . . . . . . . . . . . . . . . 953 Trabajar con pinceles. . . 929 Una visión general del espacio de nombres System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 878 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 933 Entender sesiones de pintura. . . . . . . . espacios de nombres. . 843 Los ladrillos de la WF. . . . . . . . . . 841 nCHAPTER 26 Introducción a Windows Workflow Foundation. . . . . . . . . . . . . . . . . . . . . . . . . . . 885 El papel de la clase de aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905 Trabajar con StatusStrips. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Forms. . . . . . . . . . .Windows. . . . 945 Encuesta del espacio de nombres System. . . . . . . . . 890 La funcionalidad de una clase de control. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929 Una encuesta de la GDI + Espacios de nombres. . . . . . . . . . . . . . . . . . . . . .Drawing. . . . . 931 Entender la clase Graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957 Representación de imágenes. . . . . . . 835 Resumen. . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1074 Separación de preocupaciones Usando archivos de código subyacente. . . . . . . . . . 1080 Creación de aplicaciones WPF con Visual Studio 2008. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 Trabajo con controles más exóticos. . . . . . . . . . . . . . . 1039 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983 El mundo de los controles de Windows Forms. . . . . . . . . 1091 Procesamiento de XAML en tiempo de ejecución: SimpleXamlPad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981 nCHAPTER 29 Programación con formularios Windows Forms. . . . . . . . . . . . . . . . . . . . . . . 983 Agregar controles a los formularios a mano. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106 Comprender la función de las propiedades de dependencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1099 Resumen. . . . . . . . . . . . . . . . NET. . . 1050 La investigación de las Asambleas de WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . 1030 Construcción de cuadros de diálogo Personalizar. . . . . . . . . . . . . 1028 La construcción de un host CarControl formulario personalizado. 984 Agregar controles a formularios mediante Visual Studio 2008. . . . . . . . . . 1047 Las diferentes versiones de aplicaciones de WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1034 Dinámica de formularios Windows Forms Controles de posicionamiento. . . . . . . . . . . . . . . . . . . 1103 La declaración de los controles en XAML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1101 nCHAPTER 31 Programar con los controles de WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 Creación de formularios personalizados de controles de Windows. . 1103 Una encuesta de la Biblioteca de controles de WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 986 Trabajar con los controles básicos. 1060 Detalles adicionales del tipo de aplicación. . . . . . . . . . . . . . . . . . . . . . . . . . . .Entender el formato de Windows Forms de recursos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1063 Detalles adicionales del tipo de ventana. . 1065 La construcción de una aplicación de WPF (XAML centrada). . . . . . . . . .exe. . . . . . . . . . . . . . . . 1053 La construcción de una aplicación de WPF (XAML gratuita). . . . . . . . . . . 1003 Marco botón del formulario de entrada por defecto. . 987 Configurar el orden de tabulación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ComponentModel. . . . . . . . . . . . . . . . . . . . . . . . . . 1022 Prueba del tipo CarControl. . . . . . . . . . . . . . . . . . . . 1108 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047 La motivación detrás de WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078 La sintaxis de XAML. . . . . . . . . . . . . . . . . . . . 1043 PARTE 7 n n n de aplicaciones de escritorio con WPF nCHAPTER 30 Introducción a Windows Presentation Foundation y XAML. 1070 La transformación de marcado en una Asamblea. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095 El papel de Microsoft Expression Blend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029 El papel del espacio de nombres System. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .NET. . . . . . . . . . 1167 La filosofía de WPF Servicios de representación gráfica. . . . . . . . . . . . . . . . . 1227 Problemas con ASP clásico. . . . . . . . . . . . . . . . . . 1123 Trabajar con las áreas de texto. . . . . . 1141 Entender los comandos de control de WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1231 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1177 Trabajar con plumas de WPF. . . . . . 1198 La alteración de la interfaz de usuario de un control mediante plantillas. . . . . . . . . . . . . . . . .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131 Edificio del marco de una ventana usando paneles anidados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 Los espacios de nombres de ASP. . . . . . . . . . . . . . . . . . . . . . . . 1161 Resumen. . . . . 1215 Básicos de las aplicaciones Web y servidores Web. . . . . . . . . . . . . . . 1150 Conversión de datos mediante IValueConverter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1230 La página Web ASP. . . . . . . . . . . . . . 1112 Trabajar con tipos de botón. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1226 La construcción de una página ASP clásico. . . . . . .NET nCHAPTER construcción de 33 páginas Web ASP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175 Trabajar con pinceles de WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Recursos. . . . . . . . . 1129 Diseño de Control de Contenido Utilización de los paneles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1180 Exploración de los tipos derivados de dibujo. . . . . . . . . . . . . . . . 1207 Resumen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187 Descripción de los recursos del sistema de WPF. . . . . . . . . . . . . . . . . 1120 Trabajar con el control ListBox y tipos de ComboBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . y temas. . . . . . . . . . . . . . . . 1216 El papel de HTML. . . . . . . . . . . . 1153 Establecer enlaces con objetos personalizados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .NET Modelo de código. . . . . 1224 Presentar el Formulario de datos (GET y POST). . . . . . . . . . . . 1195 Definición y Aplicación de estilos para los controles de WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116 Trabajar con casillas de verificación y RadioButton. . . . . . . . 1147 xvi nCONTENTS Descripción del modelo de enlace de datos de WPF. . . . . . . . . . . . . . . . . . . . . . . .Descripción de los eventos enrutados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181 El papel de las transformaciones de interfaz de usuario. . . . . . . . . . . . . . . . . . . 1219 El papel de las secuencias de comandos del lado del cliente. . . . . . . . . . . 1215 El papel de las HTTP. 1211 PARTE 8 n n n Construcción de Aplicaciones Web con ASP. . . . . . . . . . . . 1185 Descripción de los servicios de WPF Animación. . . . . . . . 1156 Vinculante Elementos de interfaz de usuario a los documentos XML. 1167 Exploración de los tipos derivados de forma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1165 nCHAPTER 32 WPF representación gráfica 2D. . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .NET Técnicas de Gestión. . es francamente inevitable. . . . . . . 1310 Mantener datos de sesión. Java). . . . . . . . . . . . .NET. 1267 Categorías de los controles web de ASP. .Control. . . . . . . . . . . . . . . . Visual Basic 6. . . . . . . . . . . . . . . . . 1315 Comprender las cookies. . . . . . . . . . . . . . . . . . . . . Temas y páginas maestras. . . . .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . marcos (OWL. . . . . . . . . . . . . . . . . . CORBA. . . . . . . . . . NET Cada pocos años o menos. . . . . . .NET. . . . . . . . . . . 1297 Técnicas de administración de estados de ASP. . . . . . . . . . . . . . . . . . . . . . . . . . . . NET Windows Forms y bibliotecas GDI +) que fueron desplazadas por las balas de plata desarrollo de software con el tiempo convertido en sombra de algo mejor o por lo menos algo nuevo. 1246 Interactuar con la solicitud HTTP entrante. . . . . . . . . . . . . . . . . . . . . .WebControls. . . . . . . .NET. . . . . . . . . . . . . . . . . . 1247 Interactuar con la respuesta de salida HTTP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Web. . . . . . . . . . . . . . . .NET. . . . . . . . . . . .config. . . . . . 1261 El tipo de System. . . ATL. . . . . . . . . . . .NET. . . . . . . . . . . . . . 1269 El papel de los controles de validación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Detalles de una estructura del sitio Web de ASP. . . . . . . . . . . . . 1252 El papel del archivo web.NET. . . . . . . . . . . 1259 nCHAPTER 34 Web ASP. . . . . . . . . . . . EJB). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1250 El ciclo de vida de una página Web ASP. NET platformand la última versión de el lenguaje de Visual Basic de programación. . . . . . . 1299 Comprender la función de estado de vista de ASP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1289 Resumen. . . . . . 1285 Trabajar con los temas. . . . . . . . . . . . . . . . . . . MFC. . . el programador de hoy en día deben estar dispuestos a realizar una auto-infligidas trasplante de conocimientos para mantenerse al día con las nuevas tecnologías de la jornada. . . . . . . . . . este libro examina los detalles del curso de Microsoft ofreciendo dentro del paisaje de la ingeniería de software. . . . . . . . . . . . . 1305 Trabajar con el caché de la aplicación. . . . . . 1321 Comprender la API perfil de ASP. .Web. . . . . . . . . . . . . 1256 Resumen. . . . . .UI. . . . . . . .0. . . . . . . . . . . . . . . . . . . . . . . . STL). . . . . . . . arquitecturas (COM. . . . . . . . . . . . . . . . . . y API (incluyendo. . . . . . . . 1300 El papel del archivo Global. Para ello. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1263 Los miembros clave del tipo System. . . . . . . . . . . . . . . . . . .asax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .UI. . . . . 1297 El tema de Estado. . . . . . 1324 Resumen. . . 1267 La construcción de un sitio web ASP. . . . . . . . 1295 nCHAPTER 35 de estado de ASP. . 1242 El ciclo de compilación de ASP. . . . . . 1318 El papel del Elemento <sessionState>. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1330 nIndex. . . . Los lenguajes (C + +. . . . . . . . . . . . . .NET página. . . . . . . . . . . . . . . . . . . . . . . . . A pesar de la frustración que puede sentir cuando se actualiza el conocimiento interno base. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1261 Comprender la naturaleza de los controles Web. . . . . . . . . . . . . . . . . . . . . 1331 La filosofía de. . . . . . . . . . . . . . 1303 Comprenda la distinción entre período de sesiones.WebControl. . . . . . . . . . 1243 La cadena de herencia de tipo de página. . . . . .

Como era de esperar. alternativamente. Si bien es cierto que numerosos aplicaciones se han creado con éxito utilizando este enfoque de larga tradición. Comprender el estado anterior de Asuntos Antes de examinar los detalles del universo. este capítulo se investiga el lenguaje-agnóstico y platformindependent la naturaleza de la plataforma. el común Intermediate Language (CIL). y el Common Language Specification (CLS). NET no se limita a la familia de Windows de los sistemas operativos). dado que C es un lenguaje de procedimiento. Además. el desarrollo de software para la familia de sistemas operativos Windows que participan utilizando el lenguaje de programación C en relación con la programación de aplicaciones Windows de interfaz (API) y el Windows Software Development Kit (SDK). NET. Cuando se combinan los miles de funciones globales y tipos de datos definidos por el . Por último. los desarrolladores de C se ven obligados a enfrentarse con la administración manual de memoria. la mayoría de estos temas se analizan en mucho más detalle en el resto de este texto. y lo feo construcciones sintácticas. NET. es útil considerar algunas de las cuestiones que motivado la génesis de la actual plataforma de Microsoft. que a su vez nuestra atención a los numerosos beneficios que proporciona Visual Basic 2008 y la plataforma. Además de la vista previa algunas de las características clave del lenguaje de programación Visual Basic 2008. El problema obvio primera es que C es un lenguaje muy conciso. NET Framework. también llegará a entender la relación entre varios aspectos de. como el FCL (siendo el Marco de las bibliotecas de clases). es verdad!. pocos de nosotros estaría de acuerdo que la creación de aplicaciones utilizando la materia prima de la API / SDK es una tarea compleja. el sistema de tipos común (CTS). NET temas relacionados. La vida como un programador de la API C/Win32 Tradicionalmente. Para entrar en la mente correcta-set. NET (sí. carece de los beneficios proporcionados por el orientado a objetos enfoque. como el común Language Runtime (CLR). Es comienza con una discusión de alto nivel de una serie de. tales como asambleas. a veces abreviado como el BCL o. y justo a tiempo (JIT).El punto de este capítulo es sentar las bases conceptuales para el resto del libro. vamos a comenzar este capítulo con una breve lección de historia y sin dolor para recordar nuestras raíces y entender las limitaciones de la situación anterior. Este capítulo también le proporciona una visión general de la funcionalidad proporcionada por el. NET bibliotecas de clase base. Después de completar este rápido recorrido por la vida como la conocía. aritmética de punteros complejo.

objeto de conocimiento" Por ejemplo.0 del programador Debido a un sincero deseo de disfrutar de un estilo de vida más simples. herencia y polimorfismo). la memoria manual gestión.la API de Windows a una lengua ya formidable. y la lógica de acceso a datos con un mínimo de alboroto y molestias. VB6 no permiten al programador establecer "es-un" relaciones entre los tipos (es decir. clases y funciones específicas de VB6. todavía están a merced de los aspectos dolorosos de la lengua C (por ejemplo. la aritmética de punteros complejo. dada la aparición de la plataforma. muchos programadores evitarse el mundo de C (++)marcos basada por completo en favor de la más amable. La vida como una aplicación de Visual Basic 6. C + + puede ser considerado como una capa orientada a objetos en la parte superior de C. Independientemente de la ayuda ayuda que ofrece el marco de trabajo MFC (así como muchos otros C + + basado en herramientas). Java es un lenguaje de programación orientado a objetos que tiene sus raíces . sin la herencia clásica) y no tiene apoyo intrínseco a la construcción de clase con parámetros. Por ejemplo. 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). sino que es ". el Microsoft Foundation Clases (MFC) proporciona al programador un conjunto de clases C + + que simplifica la construcción de las aplicaciones de Windows. y las construcciones sintácticas fea). Por otra parte. más suave lenguajes como Visual Basic 6. La principal limitación de VB6 (que ha sido rectificada. tipos de datos intrínsecos. 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. Mucho más de MFC. código bibliotecas (por ejemplo. En muchos sentidos. Por lo tanto. C + + muchos marcos existen en la actualidad. A pesar de su complejidad. servidores de ActiveX). Vida Como un Programador Java/J2EE Introduzca Java. debido a su raíces históricas en C. no es de extrañar que no son tan numerosos buggy aplicaciones flotando en la actualidad.0 (VB6). el hecho del asunto es que C + + sigue siendo una experiencia difícil y propenso a errores. 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). 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. NET) es que no es un lenguaje totalmente orientado a objetos. a pesar de que C + + beneficio de los programadores de la famosa "pilares de la programación orientada a objetos" (encapsulación. VB6 es muy popular debido a su capacidad de crear sofisticadas interfaces gráficas de usuario (GUI).

Así. Java (como lengua) se limpia muchos aspectos desagradables sintácticas de C + +. Una vez más. Lamentablemente. es posible que la velocidad de ejecución de Java deja mucho que desear). La belleza de una versión binaria del servidor COM es que se puede acceder de forma independiente del lenguaje. El uso de estos tipos. Vida Como programador COM El Modelo de objetos componentes (COM) fue el primer intento de Microsoft en un marco unificado de componentes. En realidad. Java hace que esta tarea problemática. sin embargo. Pura de Java a menudo no es apropiado para muchas aplicaciones de forma gráfica o numérica intensiva (En estos casos. los puntos fuertes de Java son mucho mayores que su apoyo a la independencia de la plataforma. soporte de mensajería. Delphi los programadores pueden utilizar las clases COM construido usando C. hay poco apoyo para una verdadera integración entre lenguajes. Java (como plataforma) proporciona programadores con un gran número predefinido de "paquetes" que contienen varios tipos definiciones. los programadores de Java pueden construir "100% puro de Java" aplicaciones completa con la conectividad de base de datos. web-enabled interfaces. Otro de los beneficios del COM es su naturaleza ubicación transparente. COM es una arquitectura que dice en efecto: "Si usted construye sus clases de acuerdo con la reglas del COM. y un escritorio ricos interfaz de usuario (UI). no hay manera de obtener un nuevo COM clase mediante una clase COM existentes (como COM no tiene soporte para la herencia clásica).sintácticos en C + +. se termina con un bloque de código binario reutilizables ". Java ofrece poco esperanza de la integración del lenguaje. Como muchos de ustedes saben. los programadores de VB6 puede construir clases COM que puede ser utilizada por C + +. 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. como es de su conocimiento. COM independencia del lenguaje es algo limitado. Una mejor enfoque de este tipo de programas sería utilizar un lenguaje de bajo nivel (como C + +) en su caso. y así sucesivamente. Por ejemplo. En efecto. 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. Uso de construcciones . ya que esto va en contra del objetivo principal de Java (un único de programación idioma para todas las necesidades). mientras que Java proporciona una capacidad limitada a un acceso no-Java API.

proxies. El resultado es una muy confusa mezcolanza de las tecnologías. Dim myObj Como MyComClass Establecer myObj = Nueva MyComClass 'Localización resuelven utilizando AppID. y quizás más importante. y el entorno de ejecución de COM. 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). numerosos COMconsciente marcos han venido a la existencia (sobre todo VB6). tipos de datos más básicos no siempre se puede tratar . mientras que VBScript es un subconjunto de Visual Basic 6.DoSomeWork A pesar de COM puede ser considerado como un modelo de objetos de gran éxito. Por ejemplo. manual de llamadas a procedimiento remoto. talones. JavaScript tiene una sintaxis muy similar a C. los programadores pueden evitar la necesidad de trabajar con sockets. es muy complejo bajo el capó. JavaScript. hay una pequeña cosa llamada Internet. Incluso cuando se elige una manera relativamente simple COMaware lenguaje como Visual Basic 6. VBScript. 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. considere lo siguiente VB6 código de cliente COM: "El tipo MyComClass se puede escribir en "Cualquier idioma COM-consciente. myObj. Lamentablemente. el marco de apoyo solo no es suficiente para ocultar la complejidad del COM. la creación de una aplicación web mediante COM distribuido basado en Windows Aplicaciones de Internet Arquitectura (DNA) es también muy compleja. Además. En los últimos años. Sin embargo. 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). Un problema es que muchas de estas tecnologías no tienen ninguna relación desde el punto de vista sintáctico. XML.tales como la aplicación identificadores (AppID). COM (+). y puede ser ubicado en cualquier lugar 'En la red (incluyendo el equipo local). Para ayudar a simplificar el desarrollo de los binarios COM. HTML. Vida Como un Programador de ADN de Windows Para complicar más las cosas. Más allá del hecho de que cada API de buques con su propia colección de código prefabricadas. Parte de esta complejidad se debe al simple hecho de que Windows DNA requiere el uso de numerosas tecnologías y lenguajes (ASP. Por ejemplo. y otros de bajo nivel detalles. Microsoft ha estado agregando más características tanto de Internet-en su familia de sistemas operativos y los productos. así como los datos de un acceso a la API como ADO).

Uno de los aspectos de este motor es un tipo bien definido sistema de que cada lengua. NET-consciente. • No más de plomería COM: Legacy interfaces COM (como IUnknown e IDispatch). NET Hasta aquí la breve lección de historia. la plataforma. no se puede culpar al mensajero por el mensaje). Además. dll para conviven en armonía en una sola máquina. NET-consciente "entiende". Por otra parte. Bajo NET. y el tipo de variante COM centrada en los datos no tienen cabida en un nativo. no hay necesidad de registrar una unidad binaria en el registro del sistema. La conclusión es que la vida como programador de Windows ha sido menos que perfecto. NET es "Cambiar todo" (lo siento. • Un motor de ejecución común compartida por todos NET-consciente. • 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. • Integración entre lenguajes de programación NET. NET Framework es un modelo completamente nuevo para la construcción de sistemas de la familia de Windows sistemas operativos. COM bibliotecas de tipos. aquí es un rápido resumen de algunas de las características fundamentales cortesía de NET. NET Framework es un enfoque más radical y de fuerza bruta a la racionalización el proceso de desarrollo de aplicaciones.: • interoperabilidad completa con código existente: Esto es (por supuesto) una buena cosa. los cuales tienen muy poco que ver con una Char * en C. tales como Mac OS X y varios Unix / Linux. Un BSTR en C + + no es lo mismo que una cadena en Visual Basic 6. • Un modelo de implementación verdaderamente simplificado.. NET binario. La solución propuesta por. error entre lenguajes. . manipulación y depuración entre lenguajes de código. NET.. de interoperabilidad) con las nuevas aplicaciones. NET soporta la herencia entre lenguajes. NET y viceversa. así como en numerosos sistemas operativos que no sean de Microsoft. La solución. Para establecer el escenario. . Como se puede ver durante el resto de este libro. ActiveX componentes pueden mezclar (es decir. Como se puede más probable es que se reúnen a partir de las viñetas anteriores. NET permite que múltiples versiones de la misma *. . los servicios de invocación de plataforma (PInvoke) le permite llamar a bibliotecas de Cbase (incluyendo el API subyacente del sistema operativo) de código.de forma idéntica.

vamos a ver tres principales (y sí) entidades que lo hacen posible: el CLR. NET consciente de no ser compatible con todos y cada función definido por el CTS. y los detalles de cómo se representan en el formato de metadatos. la plataforma. o CTS. tales como las discusiones. El CLR también se ocupa de un número de los detalles de bajo nivel como la gestión de la memoria. NET (más información sobre metadatos más adelante en este capítulo). y la interacción con varios dispositivos de hardware externo. NET. y CLS. Desde el punto de vista del programador. NET y COM tipos pueden interactuar unos con otros está utilizando la capa de interoperabilidad. colección NET. Tipos NET que sólo exponen las características compatibles con CLS. NET se puede encontrar en el capítulo 19. especifica cómo estas entidades pueden interactuar entre sí. El tiempo de ejecución capa se refiere correctamente como el Common Language Runtime o CLR. la representación gráfica. Otro bloque de construcción de la red.. El papel de las bibliotecas de clases base Además del CLR y CTS y especificaciones CLS. NET lenguajes de programación puede estar de acuerdo. 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. 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. Introducción a los bloques de construcción del. el único manera. CTS. Platformis el sistema de tipos común. Tipos de redes en su nombre. Entender que un hecho. y la seguridad de realizar cheques. y CLS) Ahora que usted sabe algunos de los beneficios proporcionados por. cargar y administrar. el archivo de entrada / salida (E / S). la carga de bibliotecas externas. Por lo tanto. NET puede interactuar con el. no se puede garantizar que todos los idiomas de programación. sino que también proporciona soporte para una serie . nNota cobertura de la capa de interoperabilidad. No sólo la biblioteca de clases base de encapsular primitivas diversos. El Common Language Specification (CLS) es una especificación relacionados que define un subconjunto de tipos comunes y construcciones de programación que todos. De hecho.NET no tiene nada que ver con COM (más allá del hecho de que tanto los marcos de origen de Microsoft). NET Plataforma (CLR. NET proporciona una biblioteca de clases base que está disponible para todos los lenguajes de programación. si usted construye. que puede estar seguro de todo eso. NET. La función principal de la CLR es localizar. NET-consciente puede consumir. NET puede ser entendida como un entorno de ejecución y una nueva biblioteca de clases base amplia. Por el contrario.

0. Por ejemplo. NET tenía una similar apariencia de VB6.0. delegados e interfaces. NET. definir personalizado subrutinas de construcción de clase. bas y *. Visual Basic. • Soporte completo para las técnicas de programación basadas en la interfaz. Por ejemplo. a diferencia de VB6. Como desarrolladores aprendieron rápidamente. NET lenguaje de programación se conoce como Visual Basic 2005 (VB 2005). NET 2. CTS. Teniendo en cuenta estas nuevas palabras clave. 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). enumeraciones. Figura 1-1. Java o C #. En pocas palabras. código de Visual Basic.1. • Soporte completo para la programación basada en atributos. debe quedar claro que las lenguas legado basado en COM. y la base de la colección de la relación Lo que Visual Basic 2008 trae a la mesa Debido a que. NET. como se muestra en la Figura 1. *. Mientras VB 2005 es totalmente compatible con Visual Basic. NET: • Soporte completo de la herencia clásica y el polimorfismo clásica.de servicios requerido por la mayoría de aplicaciones del mundo real. la VB. NET (VB. los desarrolladores pueden crear aplicaciones multiproceso de escritorio. aquí están algunas de las principales características proporcionadas por cortesía de VB. • establecimiento inflexible de tipos palabras clave para definir clases. utilizando Visual Basic. agregó numerosas nuevas campanas y silbatos adicionales. Con el lanzamiento de. y definir las funciones de devolución de llamada (A través de delegados). NET proporciona a los desarrolladores un idioma en toda regla orientada a objetos que es tan poderoso como lenguajes como C + +. CTS. NET es un cambio radical de anteriores tecnologías de Microsoft. CLS. Desde un alto nivel. Teniendo en cuenta este hecho. cls. a pesar de VB. NET. NET es siempre contenida dentro de un archivo *. y la construcción de la web habilitada (así como tradicionales de escritorio y la consola basada en) frente a los extremos. páginas web y servicios web XML. VB. y la biblioteca de clases base. La clase CLR." Por ejemplo. la mayoría de notabilidad lo siguiente: . las bibliotecas de clases base que definen tipos de facilitar el acceso de base de datos.0. la seguridad programática. como Visual Basic 6 no puede integrar directamente con la plataforma. NET como un nuevo miembro de la BASE de la familia en lugar de "Visual Basic 7. Microsoft introdujo un lenguaje de programación nuevo. CLS. frm). NET 1. estructuras. introdujo un gran número de nuevas palabras clave y las construcciones que muchos programadores (incluyéndome a mí) con el tiempo considerado VB. documento XML la manipulación. se puede visualizar la relación entre el CLR. vb (en contraste con el VB6 centrada *. los miembros de la sobrecarga.

Como puede imaginar. Formalmente. • Apoyo a la firma tipos de datos (SByte. que simplifican en gran medida la forma en que puede trabajar. NET (por lo tanto. Por el contrario. NET 3. NET es código administrado. 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.• 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. que puede interactuar con una variedad de almacenes de datos (bases de datos.) • La capacidad de definir un tipo único a través de múltiples archivos de código utilizando la palabra clave Partial. Uso de medicamentos genéricos. 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. • La capacidad de personalizar el proceso de registrar.5 añade aún más funcionalidad a la programación de Visual Basic idioma (ahora oficialmente llamado Visual Basic 2008). anular el registro o envío de eventos utilizando el Personalizada de palabras clave. • La introducción del espacio de nombres My. nunca podría usar VB 2008 para construir un nativo de ActiveX del servidor COM). Delegar NET tipos • Una sintaxis de inicialización de objetos nuevos.. ULong. etc. documentos XML. • La capacidad de construir los tipos genéricos y los miembros de genéricos. el término utilizado para describir el código de selección el tiempo de ejecución. objetos de colección) • Soporte para los tipos anónimos. 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). esta característica se denomina la sobrecarga de operadores. incluyendo las características básicas siguientes: • Apoyo a la inflexible instrucciones de consulta (a la LINQ Language Integrated Query). Oficialmente. La unidad binario que contiene el código administrado se denomina conjunto (más detalles en las asambleas en tan sólo un poco). el código que no . 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.

Aunque este libro se centra (casi) exclusivamente en Visual Basic 2008. NET que se deriva . Y otros lo desea. le animo a visitar este sitio. tenga en cuenta que esta dirección URL está sujeto a cambios): http://www. NET. NET vale la pena investigar en su tiempo libre (LISP. usted está seguro de encontrar. con la mayor número posible de palabras clave (como C #. Figura 1-2. NET fue revelado por primera vez al público en general durante el 2000 Microsoft Conferencia de Desarrolladores Profesionales (PDC). NET.net Una vez que haya navegado a esta página. y JScript. puede aprovechar sus habilidades mainframe mientras se mueve a la plataforma. NET iluminación. Cuando la plataforma. NET (a través de COBOL. Además de los cinco idiomas que se incluyen con Visual Studio 2008 (Visual Basic 2008. J #." ¿por qué necesitamos más de un compilador? "Hay un número de maneras de responder a esta pregunta. cualquier persona?). . Otros disfrutan de un lenguaje que ofrece más "legible" la sintaxis (como Visual Basic 2008). NET-Aware lenguajes de programación Entender que Visual Basic 2008 no es el único lenguaje que puede ser usado para construir aplicaciones. NET que se denomina código no administrado. haga clic en el enlace situado en Recursos superior de la página menú del sistema. NET compilar abajo con "el código administrado. En primer lugar. tenga en cuenta lo siguiente sitio web (por favor. NET).puede ser alojado directamente el tiempo de ejecución. lenguajes de programación NET Aunque supongo que son los principales interesados en la construcción. versiones de NET-conscientes de sus compiladores respectivos. C #. Algunos prefieren idiomas llena de puntos y comas y rizado corchetes. C + + / CLI. los hay. Ahora. COBOL y Pascal (por nombrar algunos). lenguajes de programación NET y enlaces de interés donde se pueden descargar diversos compiladores (ver Figura 1-2). NET. C + + y J #). Aquí encontrará una lista de numerosas. El más frecuente de estas preguntas tendría que ser: "Si todos. NET es uno de los muchos sitios que documentan conocidos. varios proveedores anunciaron que estaban ocupados construyendo . numerosas preguntas surgir. Programas NET utilizando la sintaxis de VB 2008. NET). NET compiladores para Smalltalk. La vida en un mundo multilingüe Como desarrolladores primero en llegar a comprender la naturaleza independiente del idioma de. sea honesto. los programadores son mucho muy particular cuando se trata de nuestra elección del lenguaje de programación (me incluyo). Adicional. En el momento de escribir estas líneas.dotnetlanguages. Si Microsoft fuera a construir un sencillo "oficial". decenas de lenguas diferentes se han sometido.

NET asambleas no se describen el uso de bibliotecas COM tipo y no están registrados en el registro del sistema. NET binarios no contienen instrucciones específicas de la plataforma. pero en lugar de lenguaje intermedio independiente de la plataforma (IL). Por ejemplo. 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. NET. pero se colocan en un cliente sitio que se ha comprometido a C #. que todavía son capaces de aprovechar la funcionalidad de. si la única "oficial".de la familia de los lenguajes C. se puede decir que realmente todos los programadores estaría feliz con este elección? O. y usted debería ser capaz de entender la estructura general de la base de código con un mínimo esfuerzo y molesta. Por supuesto. Cuando usted toma los puntos fuertes de un lenguaje de programación en particular y luego incorporar los beneficios proporcionados por la plataforma. y así sucesivamente. algunos lenguajes de programación ofrecen un excelente soporte intrínseco para tratamiento matemático avanzado. NET de su elección. NET no podría importarme menos que el lenguaje se utiliza para construir una asamblea. la interacción con los ordenadores centrales. Figura 1-3 muestra el panorama de la historia hasta el momento . exe). así como tipo de metadatos. Por ejemplo.. imagina toda la gente por ahí que pasaría por alto. Otros ofrecen un rendimiento superior para cálculos financieros. Debido a que el tiempo de ejecución. No digo más. Otras NET optar por el uso). NET por completo. Binarios NET tomar la misma extensión de archivo como servidores COM y no administrado Los binarios de Windows (*. una vez que aprender la sintaxis de uno. NET Framework. programadores NET puede permanecer fiel a sus preferencias sintácticas. Sin embargo. todo el mundo gana. en realidad las posibilidades son bastante buenas que usted pasará la mayor parte de su tiempo de construcción software usando el archivo. NET A pesar de que. Otro subproducto de la excelente integración de varios. NET se basa en la sintaxis de Fortran. Una visión general de. Quizás lo más importante. NET. es muy fácil de dominar a otro. Esto también es muy beneficioso. lógica cálculos. no tienen absolutamente ninguna similitud interna. sobre todo a los consultores de el mundo. y compartir el código compilado entre los compañeros de equipo. dll o *. Si el idioma de su elección pasa a ser Visual Basic 2008. departamentos y organizaciones externas (Independientemente de que.

así como una descripción completa de cada miembro con el apoyo de la tipo Sportscar. NET. Por lo general. MSIL. 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. y una lista de todos los conjuntos de referencias externas que son necesarios para la correcta ejecución. un ensamblado contiene código CIL. voy a utilizar la abreviatura CIL lo largo de este texto. que las interfaces son implementado por Sportscar (si procede). NET. NET 1. Como usted ya sabe. NET en el capítulo 15. información de referencia cultural (utilizado para la localización de cadenas y recursos de imagen). Cuando un *. NET. 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]). para facilitar el debate sobre el entorno de ejecución. 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. el término se cambió el lenguaje común intermedio (CIL). Sin embargo. Además de las instrucciones del CIL. con la versión final de. NET. Por último. que es oficialmente llamado un manifiesto. y del CIL están describiendo la entidad exactamente la misma. Metadatos NET es una mejora dramática en los metadatos de tipos COM. Usted examinará . el tipo de metadatos describe detalles como clase base Sportscar. exe ha sido creado con un compilador.0. Metadatos NET está siempre presente y es generado automáticamente por un hecho. Usted examinará numerosos detalles de. Por el contrario. las asambleas también contienen metadatos que describen con gran detalle las características de cada "tipo" que viven en el binario.. De acuerdo con la terminología actual. NetAware compilador. Por lo tanto. Como se mencionó. además de CIL y tipo de metadatos. Sin embargo. NET-aware. conjuntos de ellos también se describen con metadatos. "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. el módulo resultante es incluido en un ensamblado. el funcionario plazo para la IL fue el lenguaje intermedio de Microsoft (MSIL).nNota Hay un punto que se hizo en relación con la abreviatura "IL. dll o *. entender que la IL. El manifiesto contiene información acerca de la actual versión de la asamblea. si usted tiene una clase denominada Sportscar." Durante el desarrollo de. . es necesario entender algunas propiedades básicas de este nuevo formato de archivo. Por ejemplo. al leer la literatura.

simplemente se puede denominar como la propia asamblea. si usted está construyendo una red. por otra parte. usted es libre de construir su conjunto de tal manera que los tipos con menos frecuencia requerida (por ejemplo. Por el contrario. Como se puede sospechar. una asamblea es en realidad una agrupación lógica de uno o varios módulos relacionados que están destinados a ser inicialmente desplegadas y versionados como una sola unidad. vamos a examinar el papel del intermedio común . Los módulos de los demás contienen un manifiesto de nivel de módulo. el archivo *. Dll. conjuntos de un solo archivo contendrá todos los CIL es necesario. exe. Del mismo modo. tiene un montaje de un solo archivo. Técnicamente hablando. usted termina con una opción de implementación más flexibles. los documentos primarios módulo de la serie de módulos requeridos secundaria en el manifiesto del ensamblado. Por lo tanto. no es simple-a-uno entre un.diversas herramientas que pueden utilizarse para investigar los tipos de un ensamblado. exe). Por lo tanto. NET binarios. El papel de la Lengua Común Intermedio Ahora que usted tiene una mejor idea. bien definidos. el usuario final puede terminar la descarga de una gran parte de los datos que no es realmente necesario (que es. Un solo archivo y las Asambleas de varios archivos En un gran número de casos. exe. dll o *. el tiempo de ejecución sólo descargar los módulos necesarios. si un conjunto se compone de un *. metadatos. y tipo de metadatos. Como se verá en el capítulo 15. obviamente. cada uno de que se denomina un módulo. Así que. se componen de numerosas. si un usuario se hace referencia un montaje remoto que necesita ser descargado en su máquina. NET y el archivo binario (*. Por ejemplo. CIL. un tipo con nombre HardDriveReformatter) se mantienen en un separados módulo independiente. ¿por qué optar por crear un ensamblado de múltiples? Al particionar el conjunto en módulos discretos. una pérdida de tiempo). si usted está construyendo un escritorio ejecutable aplicación. y se manifiestan asociados de manera autónoma. Por lo tanto. *. metadatos. conjuntos de varios archivos. como se puede ver. si todos los tipos se colocaron en un ensamblado de un solo archivo. dll único o un módulo *. Sin embargo. que es seguro tener en cuenta que el binario y la asamblea son una misma cosa. uno de estos módulos (denominado módulo de primaria) debe contener el manifiesto del ensamblado (y posiblemente las instrucciones del CIL y los metadatos para varios tipos). NET. esto no es completamente exacto. solo paquete. Cuando se construye un ensamblado de múltiples archivos. y se manifiestan información sobre el curso de los próximos capítulos.

Add(10.1 IL_0002: ldarg.exe (examinado un poco más adelante en este capítulo).idioma (CIL) en un poco más de detalle. Class Calc Public Function Add(ByVal x As Integer. Sin importar qué.ovf IL_0004: stloc. 84) Console.exe) compila este archivo de código fuente. CIL es un lenguaje que se sitúa por encima de cualquier particular. las instrucciones de la CIL.".ReadLine() End Sub End Module ' The VB 2008 calculator.WriteLine("10 + 84 is {0}.2 IL_0003: add.locals init ([0] int32 Add) IL_0000: nop IL_0001: ldarg.maxstack 2 . NET consciente de que usted elija. No se preocupe por la sintaxis exacta. Capítulo nNota 2 examina los detalles de la compilación de código mediante el compilador de VB.method public instance int32 Add(int32 x. el siguiente de Visual Basic 2008 modelos de código trivial calculadora. ByVal y As Integer) As Integer Return x + y End Function End Class End Namespace Una vez que el compilador de VB 2008 (vbc. se termina con una sola fila ensamblado ejecutable que contiene un manifiesto. por ahora. int32 y) cil managed { // Code size 9 (0x9) .0 . platformspecific conjunto de instrucciones. los asociados compilador emite instrucciones de la CIL. pero se dan cuenta el formato de la Agregar () en la clase Calc: ' Calc. ans) Console. Por ejemplo.vb Imports System Namespace CalculatorExample ' Defines the program's entry point. se verá que el método Add () se representa mediante la CIL como las siguientes: . y los metadatos que describen cada aspecto de los tipos de Calc y Programa. Module Program Sub Main() Dim ans As Integer Dim c As New Calc() ans = c. Si se va a abrir este conjunto con la utilidad Ildasm.

int ans = c. Ahora bien. public class Calc { public int Add(int x. recordemos que esto es cierto de todos los compiladores.NET 13 // The C# calculator. } } CHAPTER 1 s THE PHILOSOPHY OF .s IL_0007 IL_0007: ldloc.1 IL_0001: ldarg. usted encontrará las instrucciones similares (ligeramente modificado por el compilador de C #): .". supongamos que ha creado este misma aplicación usando C #.maxstack 2 . int32 y) cil managed { // Code size 8 (0x8) .s IL_0006 IL_0006: ldloc. ans).locals init ([0] int32 CS$1$0000) IL_0000: ldarg.cs using System.ReadLine(). 84). public class Program { static void Main() { Calc c = new Calc().2 IL_0002: add IL_0003: stloc.method public hidebysig instance int32 Add(int32 x. en lugar de VB 2008 (de nuevo. la gran mayoría de los desarrolladores. Console. int y) { return x + y.WriteLine("10 + 84 is {0}. En realidad. } } } Si examina el CIL para el método Add (). Console. pero tenga en cuenta las similitudes en las bases de código): // Calc. Basta con entender que el Visual Basic 2008 compilador traduce el código estados en términos de la CIL. Para ilustrar.0 IL_0004: br.0 IL_0007: ret } // end of method Calc::Add .Add(10.IL_0005: br.0 IL_0008: ret } // end of method Calc::Add No se preocupe si usted no puede hacer cara o cruz del código CIL que resulta de este método. NET-consciente. NET importa un bledo los detalles de la programación del CIL idioma. namespace CalculatorExample { // Defines the program's entry point. no sudan la sintaxis.

. NET permite crear aplicaciones que utilizan el idioma de su elección. Por ejemplo. De esta forma. NET aprovecha entorno de ejecución de un compilador JIT para cada CPU orientación de la tiempo de ejecución. NET Framework en sí es platformagnostic. De hecho. Como usted ha ya hemos visto. los desarrolladores pueden escribir un solo cuerpo de código que puede ser eficiente JIT compila y ejecuta en máquinas con arquitecturas diferentes. el jitter será optimizado para funcionar en un entorno de alta memoria. Por lo tanto. si un llamada se realiza a un método denominado PrintDocument (). sin embargo. distribuciones NET ya existen para muchos no los sistemas operativos Windows (más detalles en la conclusión de este capítulo). CIL Compilación de las Instrucciones sobre plataformas específicas Debido al hecho de que las asambleas contienen instrucciones CIL. en lugar de las instrucciones específicas de la plataforma. si usted está creando una aplicación.vb y Calc. La entidad que compila el código CIL en sentido Instrucciones de la CPU que se denomina un "justo a tiempo (JIT). Por otro lado. NET teléfono celular habilitado). si va a implementar el ensamblado a una máquina de back-end del servidor (donde la memoria es rara vez un problema). dado que la CIL es independiente de la plataforma. un solo código la base se ejecuta en sistemas operativos múltiples). Beneficios del CIL En este punto. puede que se pregunte exactamente lo que se gana por el código fuente de la compilación en CIL en lugar de directamente a un conjunto de instrucciones específicas. proporcionar los mismos beneficios que los desarrolladores de Java se han acostumbrado a (es decir. . las instrucciones del CIL se compilan en platformspecific . NET que se va a implementar en un dispositivo portátil (como un Pocket PC o.archivos nSource El Código Calc. la correspondiente fluctuación está bien equipado para ejecutar dentro de un ambiente de poca memoria. el. como un hecho la inquietud compila las instrucciones de CIL en código máquina correspondiente. En contraste con la Plataforma J2EE. cada compilador. todos los idiomas se resuelven en un campo binario bien definido que hace uso del mismo tipo misma del sistema.cs código se incluyen en el Capítulo 1 subdirectorio. Además. Código CIL debe ser compilado en la marcha antes de su uso. Una de las ventajas es la integración del lenguaje. NET-consciente produce instrucciones CIL casi idénticos. Por otra parte. cada uno optimizado para la plataforma subyacente.. que a veces va por el ambiente nombre de la inquietud. De esta manera. en caché los resultados en la memoria de una manera adecuada para el sistema operativo de destino.

así como por diversos herramientas de desarrollo. Por ejemplo. metadatos NET es tan perversamente meticuloso. Para estar seguros. completa y precisa. a finales instalaciones vinculante. etc). Por suerte. siempre es el trabajo del compilador (no el programador) para definir el tipo de metadatos últimos y más grandes. los metadatos es una entidad muy útil (en lugar de un académico detalle) consumida por los numerosos aspectos del entorno de ejecución. los servicios web XML / la. estructura. que describe cada uno y todo tipo (clase. de hecho. NET incluyendo Windows Communication Foundation. los metadatos se la columna vertebral de numerosas. la característica IntelliSense que proporciona Visual Studio 2008. El papel de. NET binarios no necesitan ser registrados en el sistema Registro. NET contiene metadatos plena. las asambleas son totalmente autodescripción entidades-tanto es así.instrucciones que aparecen en la primera invocación y retenido en la memoria para su uso posterior. Para ilustrar el formato de. herramientas de depuración. enumeración. Porque. que.Calc (02000003) Flags : [Public] [AutoLayout] [Class] [AnsiClass] [BeforeFieldInit] (00100001) Extends : 01000001 [TypeRef] System.Object 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. 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. Por lo tanto. así como los miembros de cada tipo (propiedades. 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: CalculatorExample. funciones. capa NET . metadatos NET. eventos. el la próxima vez PrintDocument () se llama. Metadatos Tipo NET Además de las instrucciones del CIL. servicios de la reflexión. no es necesario volver a compilar el CIL. NET. y el Visual Basic 2008 se compilador. un montaje. etc) se define en el binarios.

así como diversas características de la propia Asamblea (versión número. este documento manifiesta la lista de ensamblados externos requeridos por Calc. NET-consciente.assembly Calc { . Comprender el sistema de tipos común Un montaje de la propuesta puede contener cualquier número de distintos "tipos". Al igual que tipo de metadatos. NET metadatos..) Capítulo 15 examinará la utilidad de los datos del manifiesto en la mayor parte más detalles. enumeración.corflags 0x00000001 En pocas palabras. El papel de los ensamblados de manifiestos Por último pero no menos importante. NET también contiene metadatos que describen el montaje en sí (técnicamente se denomina un manifiesto). directivas externa). estructura. delegado}.Remoting. la versión de la asamblea número.subsystem 0x00000003 . Tal vez uno de los métodos de interfaz tiene una enumeración como una entrada .assembly extern mscorlib { . etc. Al crear soluciones usando un lenguaje. NET. el ensamblado puede definir una sola clase que implementa algunos número de interfaces.vb visto anteriormente en este capítulo (suponemos que indica el compilador a nombre de nuestra asamblea Calc.module Calc.exe . etc.ver 0:0:0:0 } .. recuerde que un montaje. . "tipo " es simplemente un general termused para referirse a un miembro del conjunto {clase.imagebase 0x00400000 . lo más probable es interactuar con cada uno de estos tipos. interfaz. Éstos son algunos de los detalles relevantes del manifiesto generado al compilar el archivo de código Calc.. Capítulo 16 formalizará el papel de. los documentos de manifiesto todos los ensamblados externos requeridos por la Asamblea actual para que funcione correctamente. En el mundo de.exe): .. Por ejemplo.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) . y el objeto serialización proceso.ver 2:0:0:0 } . es siempre el trabajo del compilador para generar el manifiesto del ensamblado. Entre otros detalles.file alignment 512 . la información de copyright.exe (a través de la asamblea. . nombre del módulo.

Public Interface IDraw Sub Draw() End Interface Por su cuenta. Public Class Calc Public Function Add(ByVal x As Integer. los tipos de interfaz se definen mediante la interfaz palabra clave. ejecutado) por una determinada clase o estructura. ByVal y As Integer) As Integer Return x + y End Function End Class Si usted tiene experiencia en el desarrollo de clases VB6. métodos y eventos) y los puntos de datos (datos de campo. que es la piedra angular de la programación orientada a objetos (POO). tales como la interfaz IUnknown. tenga en cuenta que los tipos de clase ya no son definido dentro de un archivo *.parámetro y devuelve una estructura a la persona que llama. por lo menos. 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 *. En VB 2008. vb). para todos. Sin embargo. las clases se declaran mediante la palabra clave de clase: ' A class type. sin embargo. CTS tipos de clase Todos los idiomas. la noción de un tipo de clase. 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. 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. He aquí una breve descripción. las interfaces son de poca utilidad. propiedades. 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. Una clase puede estar compuesto de cualquier número de miembros (por ejemplo. NET a aprender acerca de cómo trabajar con los cinco tipos definidos por el CTS en el idioma de su elección. cls. NET. interfaces. por ejemplo: ' Classes or structures that implement this interface ' know how to render themselves. NET-consciente apoya. cuando una clase o estructura implementa una propuesta . Los capítulos 5 y 6 se examinará la detalles de la construcción de tipos de clases con Visual Basic 2008. Normalmente. Es importante. En Visual Basic 2008. NET no obtengan un común de base. A diferencia de COM. también conocido como variables miembro).

Como verá en el capítulo 4. que tienen una semántica basada en valores (véase Capítulo 12 para más detalles). you could build a custom enumeration using the VB 2008 Enum keyword: ' An enumeration type. ya que son para formthe fundación de la arquitectura de eventos. En pocas palabras. un delegado se utiliza para almacenar las direcciones . Public Enum CharacterType Wizard = 100 Fighter = 200 Thief = 300 End Enum Las demandas de CTS que los tipos enumerados derivan de una clase base común. usted puede solicitar el acceso a la funcionalidad proporcionada mediante un referencia de la interfaz de "manera polimorfa". manipular y transformar el nombre de base / valor mediante programación. yPos) End Sub End Structure CTS Enumeration Types Enumerations are a handy programming construct that allows you to group name/value pairs. geométrica. la actividad del ratón interceptar..WriteLine("({0}. CTS tipos de estructura El concepto de una estructura también se formalizó en el marco del CTS. Public Structure Point Public xPos As Integer Public yPos As Integer Public Sub New(ByVal x As Integer. los delegados ser utilizado en el fondo. esta clase base define un número de miembros interesantes que le permiten extraer. interfaz de programación basada Se explora la en el capítulo 9. o proceso de devoluciones de datos en un servidor web. una estructura puede ser pensado como una alternativa ligera a los tipos de clase. Rather than keeping track of arbitrary numerical values to represent each possibility. las estructuras son más adecuadas para la modelización numérica. xPos. o tipos de datos matemáticos y se crean en Visual Basic 2008 utilizando la palabra clave de la estructura: ' A structure type. son muy importantes. ByVal y As Integer) xPos = x yPos = y End Sub Public Sub Display() Console. CTS tipos de delegado Los delegados son quizás los más complejos de tipo NET. {1}".interfaz en su forma única.Enum. NET. Para estar seguro. assume you are creating a video game application that allows the player to select one of three character categories (Wizard. Fighter. Sin embargo. or Thief). en cualquier momento que desee para manejar el clic de un botón. En pocas palabras. Por lo general. For example. System.

cada miembro tiene un nivel de visibilidad dada marcados con un determinado VB 2008 la palabra clave (por ejemplo. método. incluyendo numerosos asociados detalles tales como la multidifusión (es decir. son capaces de definir los delegados directamente cuando se desea construir más compleja y potente soluciones. un evento constante. propiedad. operador. campo de sólo lectura. Formalmente hablando. paso a paso. se dan cuenta que la mayoría de tipos puede contener cualquier número de miembros. un miembro de tipo se ve limitada por el conjunto {constructor.) Algunos miembros pueden ser declarados como "abstracto" para hacer cumplir una polimórficos comportamiento de los tipos derivados. El CTS define varios "adornos" que pueden estar asociados con un miembro determinado. 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.de método que se puede invocada en un momento posterior. _ ByVal y As Integer) As Integer Capítulos 11 y 18 se examinarán los detalles de. etc. pública. así como "virtual" para definir una lata (pero reemplazables) la aplicación. nNota Como se describe en el capítulo 10.}. Por ejemplo. En Visual Basic 2008. Visual Basic 2008 admite la construcción de los tipos genéricos y los miembros de genéricos. NET delegado. Sin embargo. los delegados se declaran usando la palabra clave Delegado: ' This delegate type can "point to" any method ' returning an integer and taking two integers as input. La construcción de los miembros de tipo se examina en el transcurso de los próximos varios capítulos. Public Delegate Function BinaryOp(ByVal x As Integer. todas las palabras clave del lenguaje en última instancia resolver al mismo tipo . finalizador. Privado. A pesar de una lengua dada normalmente tiene una palabra clave única para declarar una CTS intrínseca tipo de datos. el campo. CTS miembros de tipo Ahora que ha visto previamente cada uno de los tipos formalizado por la CTS. constructor de la residencia. 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). 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. Además. protegido. tipo anidado.

definido en un ensamblado denominado mscorlib. UShort.Decimal Decimal decimal Decimal System. las diferencias lingüísticas expresar la misma programación en construcciones únicas..UInt64 ULong ulong unsigned __int64 System.exe.Object Object object Object^ System.UInt32 UInteger uint unsigned int or unsigned long System. Sin embargo. que documenta cómo las principales CTS tipos de datos se expresan en diversos. NET puede o no tener una palabra clave para representar . } Como ya hemos visto. Comprender el lenguaje común Especificación Como ustedes saben. en este caso) emiten una similar conjunto de instrucciones de la CIL.0 o superior. el lenguaje también puede variar con respecto a su nivel general de funcionalidad. NET. Table 1-1.Int32 Integer int int or long System. el es muy probable que la sintaxis se parece bastante diferente en la superficie: ' A VB 2008 subroutine..Byte Byte byte unsigned char System.Single Single float float System.exe o csc.Int16 Short short short System. NET.UInt16 UShort ushort unsigned short System. un método sin valor de retorno).SByte SByte sbyte signed char System. en VB 2008 se suele denotar la concatenación de cadenas con el creador "y" comercial (&).Double Double double double System..Int64 Long long __int64 System.String String string String^ System. Por ejemplo. un lenguaje.Char Char char wchar_t System. estas variaciones sintácticas menores son insignificantes a los ojos de el tiempo de ejecución. Public Sub MyMethod() ' Some interesting code. Considere la tabla 1-1. Incluso cuando dos lenguas distintas expresa el mismo lenguaje de programación (por ejemplo. mientras que en C # siempre hacer uso del signo más (+). ya que los compiladores respectiva (vbc. términos específicos del lenguaje. NET 2. The Intrinsic CTS Data Types CTS Data Type VB 2008 Keyword C# Keyword C++/CLI Keyword System. Por ejemplo. public void MyMethod() { // Some interesting code.Boolean Boolean bool bool nNota palabras clave VB para firmar los tipos de datos (SByte.. UInteger y ULong) sólo se admiten en . End Sub // A C# method with no return value.dll.

el CLS puede ser visto como un subconjunto del total funcionalidad definida por el CTS. si pretenden que su productos para funcionar a la perfección en el universo. ByVal y As ULong) As ULong Return x + y End Function End Class Sin embargo. Los únicos aspectos de un tipo que debe cumplir el CLS son las definiciones miembros ellos mismos (es decir. Cada regla se le asigna un nombre sencillo (por ejemplo. un conjunto de reglas que los constructores compilador debe conformto.sin firmar datos. como el mundo exterior no notará la diferencia. mientras que al mismo tiempo tener acceso en un uniformmanner por todos los idiomas que se dirigen a la plataforma. lo ideal sería tener una línea de base a la cual todos los idiomas. 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. Teniendo en cuenta esta regla. como los parámetros y volver los valores de hacer uso de los datos sin signo (que no es un requisito de la cls): Public Class Calc ' Exposed unsigned data is not CLS compliant! Public Function Add(ByVal x As ULong. convenciones de nombres. En muchos sentidos. 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. el siguiente método Add () no es compatible con CLS. ByVal y As Integer) As Integer . NET-consciente se espera que los conforman. NET. 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. Teniendo en cuenta estas posibles variaciones. Para ilustrar esto. La lógica de ejecución de un miembro puede utilizar cualquier número de técnicas no-CLS. NET-consciente debe apoyar para producir código que puede ser organizado por el CLR. y puede o no puede apoyar los tipos de puntero. El CLS es en última instancia. NET. así como los que (de alguna manera) interactuar con ellos. si usted fuera a hacer simplemente uso de los datos internos sin firmar de la siguiente manera: Public Class Calc Public Function Add(ByVal x As Integer. NET. "CLS artículo 6") y describe cómo esta norma afecta a los que construyen los compiladores. parámetros y tipos de cambio).

y puede estar seguro de que todos los. cuando los desarrolladores hacer uso de la Microsoft Foundation Classes (MFC) para crear una nueva aplicación. Desarrollador NET. Por ejemplo. <Assembly: System. la forma de definir los miembros de la residencia.' As this ULong variable is only used internally. 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. sin embargo. Dim temp As ULong = 0 Return x + y End Function End Class usted tendría que aún se ajustaban a las normas de la ETI. NET son capaces de invocar el método Add (). por lo general. Afortunadamente. Programación hablando. Por ejemplo. ¿cómo debe ser enumeraciones representan internamente (el tipo de base utilizada para el almacenamiento). Comprender el Common Language Runtime Además de las especificaciones de CTS y CLS. La buena noticia. 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. Por supuesto. ' we are still CLS compliant. el CLS describe cómo una lengua determinada internamente debe representar cadenas de texto. Si cualquier violaciónes CLS se descubren. Una vez más. una comprensión íntima de la CTS y las especificaciones de CLS es sólo de interés para herramienta / constructores compilador. VB 2008 se define una programación de algunas construcciones que no son compatibles con CLS. además de con el artículo 1. el próximo TLA (abreviatura de tres letras) que sostienen con en este momento es el CLR. y así sucesivamente. Otros lenguajes populares también tienen un tiempo de ejecución correspondiente. el CLS define muchas otras reglas. programadores VB6 también atado a un . recibirá un compilador de error y una descripción del código de ofender.dll). NET: "Dile que el compilador para comprobar la compatibilidad con CLS. Hasta entonces. usted no tiene que cometer estas normas a la memoria para ser un experto. mfc42.CLSCompliant(True)> El capítulo 16 se sumerge en los detalles de la programación basada en atributos. es que puede indicar al compilador para VB 2008 verifique el código de compatibilidad con CLS mediante un único atributo. Velar por el cumplimiento CLS Como se verá a lo largo de este libro. que son conscientes de que su programa requiere la biblioteca MFC en tiempo de ejecución (por ejemplo.

NET ofrece un nuevo sistema de ejecución.dll en acción La Asamblea / Espacio de nombres / Distinción Tipo Cada uno de nosotros entiende la importancia de las bibliotecas de código. VB 2008 los desarrolladores aprovechar el idioma. Cuando se construir. La plataforma. compila el CIL asociados en platformspecific instrucciones. Para mantener todos los tipos dentro de la bibliotecas de clases base bien organizada. El CLR a continuación. es mscoree. J2EE. mscoree. mscorlib. Aunque la biblioteca de base de toda la clase se ha dividido en una serie de asambleas discreto. NetAware. así como los tipos de datos básicos utilizados por todos los idiomas. automáticamente tendrá acceso a esta asamblea en particular. o MFC es dar a los desarrolladores un conjunto bien definido de código existente para aprovechar en sus aplicaciones. un hecho. el conjunto de claves es mscorlib.dll contiene un gran número de tipos básicos que encierran una gran variedad de tareas de programación comunes. establece el tipo en la memoria. NET proporciona un solo tiempo de ejecución bien definidos capa que es compartida por todos los idiomas y plataformas que están. Figura 1-4.dll colección con nombre (también conocido como el Común Objeto motor de tiempo de ejecución de ejecución).dll. bibliotecas NET. y luego ejecuta el código en que se trate. soluciones NET. y el motor de ejecución de.dll cargado automáticamente. lo que a su vez carga el ensamblado necesario en la memoria. El quid de la CLR está físicamente representada por una mscoree.dll). En primer lugar. 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. el CLR también interactúan con los tipos contenidos en las bibliotecas. NET clase base cuando sea necesario. msvbvm60. NET.tiempo de ejecución del módulo o dos (por ejemplo. Cuando se hace referencia a una asamblea para el uso. El motor de tiempo de ejecución es responsable de una serie de tareas. los desarrolladores de Java están vinculados a la Máquina Virtual de Java (JVM) y así sucesivamente. NET hace un uso extensivo del concepto de espacio de nombres . el lenguaje Visual Basic 2008 no viene con una biblioteca de código específico del lenguaje. NET. realiza todas las comprobaciones de seguridad necesarias. El punto de las bibliotecas que se encuentran dentro de Visual Basic 6. NET. 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). Por el contrario. La diferencia clave entre el. 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. Sin embargo. Además de cargar los ensamblados personalizados y la creación de tipos personalizados. la plataforma.

C # y C + + / CLI: ' Hello world in VB 2008 Imports System Public Module MyApp Sub Main() Console. tales como la API de Java es que cualquier orientación por idioma el tiempo de ejecución. cada uno con sus propios tipos semánticamente relacionados. el espacio de nombres System.En pocas palabras. los siguientes tres programas de todos los ilustrar el omnipresente "Hello World ". Es muy importante señalar que un solo conjunto (como mscorlib. Esta herramienta le permite examinar los ensamblados de referencia por la solución actual. el espacio de nombres System. Por ejemplo. el espacio de nombres System. un espacio de nombres es un conjunto de tipos correspondientes que figuran en una asamblea. NET hace uso de los mismos espacios de nombres y los mismos tipos.dll) puede contener cualquier número de espacios de nombres. } . int main(array<System::String ^> ^args) { Console::WriteLine(L"Hi from C++/CLI"). estructuras.Forms define elementos de la GUI. La diferencia fundamental entre este enfoque y una biblioteca específica del lenguaje. } } // Hello world in C++/CLI #include "stdafx. Un montaje único puede tener cualquier número de espacios de nombres. Para aclarar. public class MyApp { static void Main() { CHAPTER 1 s THE PHILOSOPHY OF . Figura 1-5. y los miembros de un tipo específico. cada uno de los cuales puede contener cualquier número de tipos (clases.WriteLine("Hi from VB 2008") End Sub End Module // Hello world in C# using System. interfaces.Windows.dll contiene diversas espacios de nombres. Por ejemplo.NET 23 Console. los tipos dentro de un determinado espacio de nombres. 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). return 0. o delegados). y así sucesivamente.WriteLine("Hi from C#").h" using namespace System. los espacios de nombres dentro de un conjunto particular. Tenga en cuenta que mscorlib. enumeraciones. escrito en Visual Basic 2008.Data define el centro de tipos de base de datos de acceso.IO contiene el archivo I / O-tipos relacionados.

SqlClient System.0) that represent the System.Reflection These namespaces define types that support runtime System. System.NET 3.NET Namespace Meaning in Life System. Este espacio de nombres proporciona un cuerpo de la base de los tipos que tendrá que aprovechar el tiempo y otra vez como un desarrollador de.NET . 24 CHAPTER 1 s THE PHILOSOPHY OF . NET es llegar a conocer la riqueza de tipos definidos en los (numerosos).NET types to interact with “unmanaged code” (e. Table 1-2.Linq These namespaces define types used when programming System. no se puede construir cualquier tipo de funcional. System.Reflection.Windows The System.Runtime.Collections.NET 3.Shapes Windows Presentation Foundation UI toolkit. NET. tanto física como lógica. A Sampling of . environment variables.Data. Más allá de las variaciones sintácticas menores. and garbage collection. El espacio de nombres más fundamentales para conseguir sus manos en torno a es nombre del sistema.Controls namespaces (introduced with . que se define dentro de un espacio de nombres nombre del sistema.0–centric) Windows Communication Foundation API.Forms applications using .Drawing These namespaces define types used to build desktop System.Windows.. NET espacios de nombres. Claramente. System.OleDb System.InteropServices This namespace provides facilities to allow . as well as a number of commonly used exceptions and attributes. and port manipulation.Windows. C-based DLLs and COM servers) and vice versa. as well as base types and interfaces that allow you to build customized collections.Data. NET. estas tres aplicaciones de apariencia muy muy parecidos. random number generation.ServiceModel This is one of many namespaces used to build distributed applications using the (. System.NET.NET Namespace Meaning in Life System Within System you find numerous useful types dealing with intrinsic data.NET Namespaces . System.Data These namespaces are used for interacting with relational System.Linq System. System.Emit type discovery as well as dynamic creation of types.OracleClient System. System. System.Ports System.2 ofrece un resumen de algunos (pero ciertamente no todos) de los espacios de nombres.IO.Xml.Linq against the LINQ API.Windows.Generic types. mathematical computations.Windows namespace is the root for several new System.g. su objetivo principal como desarrollador de.Workflow.IO. Cuadro 1.Data. System.IO These namespaces define numerous types used to work System.Collections These namespaces define a number of stock container System.NET’s original UI toolkit (Windows Forms).Compression with file I/O.Data.Tenga en cuenta que cada lengua está haciendo uso de la clase Console.NET web applications and XML web services. System.Data.Runtime These are two of many namespaces that define types used . De hecho. compression of data. NET sin al menos hacer una referencia al espacio de nombres System.Web This is one of many namespaces that allow you to build ASP.Odbc databases using ADO.

Drawing Public Class Program Public Sub DisplayLogo() . Así es como funciona.Drawing ' Graphical rendering types.Console. Digamos que usted está interesado en la construcción de una tradicional aplicación de escritorio. and so on. 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. Consideremos de nuevo el espacio de nombres System. Por ejemplo.Activities to build “workflow-enabled” applications using the .Xml The XML-centric namespaces contain numerous types used to interact with XML data. nNota el capítulo 2 se ilustra el uso del. In the security-centric namespaces. que se explica en el capítulo 2). Imports System.SqlClient ' 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. Si bien el aprendizaje de los tipos cada espacio de nombres se contiene el estudio y experimentación.Drawing). El motor de tiempo de ejecución sólo se ve una sola entidad llamada System. Imports System.NET 3.Console representa una clase denominada consola que se contenida dentro de un espacio de nombres denominado System. esto no es así. you find numerous types dealing with permissions. System. la palabra clave importaciones simplifica el proceso de los tipos de referencia se define en el un espacio de nombres en particular. System.NET universe.0 Windows Workflow Foundation API. System. 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. Sin embargo. En Visual Basic 2008. NET Framework 3.Workflow. Imports System Imports System. Desde su perspectiva. a los ojos del tiempo de ejecución. si usted está interesado en la creación de una instancia de la clase Bitmap (definido en el Espacio de nombres System. que proporciona detalles con respecto a cada espacio de nombres y el tipo que se encuentran en las bibliotecas de clases base.5 SDK.Windows.Security Security is an integrated aspect of the . se puede asumir que System. Imports System. he aquí algunos posibles candidatos a la referencia en su programa: ' Here are all the namespaces used to build this application.Threading This namespace defines numerous types to build multithreaded applications.System.Data ' General data-centric types.Forms ' GUI widget types. Imports System ' General base class library types.Data. Imports System. NET. usted es libre de crear instancias de los tipos que contienen. puede escribir lo siguiente: ' Explicitly list the namespaces used by this file. cryptography.

Tipo Drawing. el Sistema. Si no ha especificado el espacio de nombres System. recuerde siempre que esta técnica es simplemente una notación abreviada para especificar un tipo es totalmente nombre completo.Bitmap está contenida en un ensamblado independiente nombrado System. Sin embargo.' Create a 20 x 20 pixel bitmap. Como se ha mencionado. En este texto. End Sub End Class Si bien la definición de un tipo utilizando el nombre completo proporciona una mayor facilidad de lectura. End Sub End Class Debido a que su aplicación es la importación de System.. que se publicará un error del compilador.Bitmap(20.Drawing..Drawing. Dim companyLogo As New Bitmap(20. NET Framework se encuentra en un directorio específico denominado el mundial memoria caché de ensamblados (GAC). 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. usted es libre de declarar variables con un completo nombre. de múltiples núcleos.Drawing. 20) .. En una máquina Windows. Sin embargo. 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. 20) . creo que había de acuerdo en que la palabra clave de Visual Basic 2008 las importaciones reduce las pulsaciones de teclado. NET vivir dentro de espacios de nombres mscorlib. Sin embargo.Drawing. también hay que decir la VB 2008 compilador el nombre del ensamblado que contiene la definición real de la CIL referencia tipo..dll. Dim companyLogo As New System.dll. 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. Un gran mayoría de las asambleas. así: ' Not listing System.Drawing namespace! Imports System Public Class Program Public Sub DisplayLogo() ' Create a 20 x 20 pixel bitmap. el compilador es capaz de resolver el Mapa de bits de clase como miembro de este espacio de nombres. esto puede ser localizado en C: .

nNota Si ha instalado Visual Studio 2008.exe) le permite cargar cualquier. Usted estudiar la manera de hacerlo en el siguiente capítulo. se aprende sobre la marcha. Como puede ver. de nuevo. Por lo tanto. NET. Al igual que cualquier nuevo sistema de código de prefabricados. así que voy a mantener a raya a los detalles por ahora. la Figura 1. Ildasm. a continuación. (Lo siento. Dependiendo de la herramienta de desarrollo que está utilizando para construir sus aplicaciones.exe le permite ver la composición interna de cualquier conjunto.7 muestra el conjunto integrado Calc. Usando Ildasm. como muestra en la Figura 6. Una vez que ha cargado esta herramienta.exe se debe instalar en C: \ Archivos de programa \ Microsoft SDKs \ Windows \ V6. puede olvidarse de todo sobre el System. Ildasm. sólo recuerda que lo que hace un único espacio de nombres es que contiene tipos que de alguna manera están relacionados semánticamente.exe al abrir una aplicación de Visual Studio 2008 Símbolo del sistema (véase el capítulo 2 para más detalles) y escribiendo el nombre de la herramienta (ildasm) y pulsando la tecla de retorno. Las bibliotecas de clases base de residir en la GAC.\ Windows \ assembly. el código CIL. sólo tiene que buscar en su máquina para una aplicación llamado "Ildasm. Figura 1-7. Viendo el código CIL .exe compilando el archivo de código Calc. también puede cargar Ildasm. A modo de ejemplo. Figura 1-6.vb visto anteriormente en este capítulo.Windows y System. NET.exe"). Ildasm.Web espacios de nombres (entre otros). es por eso que usted está leyendo este libro!) El lenguaje intermedio de utilidad Desensamblador (Ildasm.exe en esta ubicación.exe presenta la estructura de un conjunto con un formato familiar de vista de árbol. y tipo de metadatos.0A \ bin (si usted no puede encontrar Ildasm.1. NET montaje e investigar su contenido. incluyendo el manifiesto de asociados. se le tienen varias maneras de informar al compilador que las asambleas que desea incluir en la compilación ciclo. De forma predeterminada. espacios de nombres y estilos a su disposición. si usted no tiene necesidad de una interfaz de usuario más allá de una simple aplicación de consola. los espacios de nombres de base de datos tienen más probabilidades de poco interés. vaya al comando de menú Archivo AOpen y vaya a un conjunto que desea explorar. no hay acceso directo al "arte de magia" conocer todas las asambleas.exe Si usted está comenzando a sentirse un poco abrumado ante la idea de obtener el dominio sobre cada espacio de nombres en la plataforma. NET. Si está creando una aplicación de pintura.

exe apoya una ventana Desensamblador (abre pulsando la barra espaciadora) así como un cuadro de lista desplegable que le permite ver la base de código subyacente en el . y los miembros que figuran en una asamblea dado. en vez de buscar una aplicación ensamblado utilizando su lenguaje de gestión de elección.Viewing el CIL subyacentes a través de Ildasm. si usted está interesado en ver el contenido del manifiesto de la asamblea.exe Ver los metadatos de tipo Si desea ver los metadatos de tipos para el ensamblado cargado. NET de los navegadores están disponibles para su descarga. la comprensión de algunos conceptos básicos de la CIL sólo fortalecerá su programación muscular. si fueron a doble clic en el método Main () del tipo de programa. Al leer este libro. Ildasm. Aunque no es necesario convertirse en un experto en el código CIL a ser un dominio del VB 2008 programador. Figura 1-11 muestra nuestra aplicación Calc. Figura 1-10. y voy a ilustrar las características adicionales de la herramienta en su caso en el texto. Por ejemplo. Afortunadamente.Viewing metadatos a través de Ildasm.exe también le permite ver las instrucciones del CIL de un miembro determinado. NET binario.Add () método Figura de tipo 1-9.exe Para estar seguro.exe para ver cómo su código de Visual Basic 2008 se representa en términos de código CIL independiente de la plataforma. pulse Ctrl + M.exe principal (ver Figura 1-10).exe es una tarea muy común cuando se desea ahondar en las entrañas de una. simplemente haga doble clic en el icono MANIFIESTO en la ventana Ildasm. Figura 1-11. Una vez que haya instalado esta aplicación. Reflector es una herramienta de exploración de objetos muy popular.Viewing datos del manifiesto a través de Ildasm.exe Ver los metadatos de la Asamblea (también conocido como el Manifiesto) Por último. Esta herramienta gratuita se puede descargar de http://www.com/roeder/dotnet. usted es capaz de ejecutar la herramienta y el enchufe en cualquier conjunto que desee utilizando la opción de menú Archivo AOpen.exe muy popular.exe tiene más opciones que se muestra aquí.aisto.exe una vez más. NET 29 Uso de Lutz Roeder reflector Si bien la utilización Ildasm. recomendamos abrir los ensamblados con Ildasm. Tenga en cuenta que reflector. Figura 1-8. Ildasm. CAPÍTULO 1 n LA FILOSOFÍA DE. muchos años. el gotcha una es que sólo son capaces de ver el código CIL subyacente. tipos. una ventana independiente que muestra la subyacentes del CIL (ver Figura 1-8).Además de mostrar los espacios de nombres. incluyendo el reflector. Figura 1-9 muestra los metadatos de la Calc.

NET instalado. Sin embargo. Motor NET (conocido como el virtual Sistema de Ejecución.com/netframework). Para la sorpresa de la mayoría de los desarrolladores.exe está instalado. NET área de descarga (http://msdn. Microsoft proporciona un paquete de instalación dotNetFx35setup. numerosas distribuciones de Linux y Solaris. nNota El sistema operativo Windows Vista está preconfigurado con todas las necesarias. NET base bibliotecas. Lo dejo hasta que veas el número de características interesantes que se encuentran dentro de esta herramienta.ecma-international. NET. CLI (Common Language Infrastructure). Implementar el tiempo de ejecución. Sin embargo. NET No debería ser ninguna sorpresa que. 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.exe así como reflector. NET sólo se puede ejecutar en una máquina que tiene la . por supuesto. infraestructura de red (por ejemplo.5 SDK (así como comerciales.exe para ilustrar diversos conceptos. se producirá un error para ejecutar. No ser conscientes de que a lo largo del resto del libro. NET de software. si implementa un ensamblado a un equipo que no tiene. Las especificaciones de interés son . Para entender cómo es esto posible. base . NET Framework instalado. como el equipo de desarrollo debe estar correctamente configurado en el momento de instalar la libre disponible.microsoft. Una vez dotNetFx35setup. si va a implementar su aplicación a otras versiones del sistema operativo Windows. NET Para cerrar este capítulo. por nombrar pocos). tales como Visual Studio 2008). NET plataforma. el código CIL). NET. el equipo de destino contendrá ahora la clase. NET Framework 3. Mejor aún. Para una persona que construye. o VES). NET instalado y configurado. es necesario llegar a un acuerdo con otra sigla NET en el universo. el formato.dll). me permito hacer un breve comentario sobre la naturaleza independiente de la plataforma. NET espacios de nombres. Por esta razón. esto nunca debe ser un problema. tendrá que velar por el equipo de destino tiene el medio ambiente. y la mecánica de un hipotético. Este programa de instalación se puede descargar de Microsoft de su. entornos de desarrollo NET. y adicionales.idioma de su elección (incluyendo.. La naturaleza independiente de la plataforma. NET puede ser desarrollado y ejecutado en los sistemas no operativos de Microsoft (Mac OS X.org).exe con nombre que puede ser libremente enviado e instalado junto con su. NET. el GAC). voy a hacer uso de ambos Ildasm. estos documentos han sido sometidos a ECMA International como oficial de las normas internacionales (http://www. infraestructura NET. WhenMicrosoft lanzado la plataforma. NET (mscoree.

distribuciones NET ampliar las bibliotecas de la CLI con sus equivalentes de Microsoft compatibles con ASP. roscado. NET de Microsoft. etc). la reflexión. Table 1-3. consola de E / S / S de archivos.NET). including the rules of the CTS and CLS. 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. Hasta la fecha.NET). La buena noticia. sin embargo. o el desarrollo de aplicaciones de escritorio interfaz gráfica de usuario (a través de Windows Forms o Windows Presentation Fundación). como se muestra en la Tabla 1-3. NET cualquier número de sistemas operativos y / o transformadores. La CLI no define los espacios de nombres que faciliten el desarrollo web (ASP.NET distribution Partitions of ECMA-335 Meaning in Life Partition V: Debug Exchange Format Defines details of .NET debugging symbols Partition VI: Annexes Provides a collection of “odds and ends” details such as class library design guidelines and the implementation details of a CIL compiler 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. hay dos implementaciones más importantes de la CLI (más allá de ofrecer específicas de Windows de Microsoft). las necesidades básicas de seguridad. la . Partitions of the CLI Partitions of ECMA-335 Meaning in Life Partition I: Concepts and Architecture Describes the overall architecture of the CLI. NET utilizando. hasta el punto de que se ha dividido en seis divisiones. ADO.NET y Windows Forms (entre otros API) con el fin de ofrecer todas las funciones. Aunque este texto se centra en la creación de aplicaciones. acceso a bases de datos (ADO. es que la corriente principal.NET. La buena noticia.NET metadata Partition III: Instruction Set Describes the syntax and semantics of CIL code Partition IV: Profiles and Libraries Gives a high-level overview of the minimal and complete class libraries that must be supported by a . ECMA-335 es quizás el más "carne" de las dos especificaciones. and the mechanics of the . acceso a la red.NET runtime engine Partition II: Definitions and Semantics Describes the details of . las plataformas de desarrollo a nivel de producción. la manipulación de XML. sin embargo.• 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. es que el código abierto más importantes.

Uso Mono.NET. Esto fue seguido por un examen de la Ildasm.dll) y la biblioteca de clases base (mscorlib. 2004).dotgnu. NET básicamente se reduce a un motor de ejecución en tiempo de ejecución (mscoree.exe. AIX. distribuciones NET. así como la cobertura de cómo configurar un equipo para organizar las aplicaciones.exe servicios públicos. ejemplos de código y documentación. Por otra parte.g. and so on) as well as Windows and Mac OS X. nNota Si desea conocer más acerca de Mono o Portable. la tabla 1-4 proporciona información sobre el Mono y proyectos Portable. http://www.NET. NET. NET y Visual Basic 2008 intento para racionalizar el actual estado de cosas. NET utilizando una fuente alternativa de código abierto. Como se ha visto. all major Linux distributions.NET is another open source distribution of the CLI that runs on numerous operating systems. NET Easton MJ y King Jason (Apress.mono-project.exe y navegar por objeto reflector. así como numerosas herramientas de desarrollo que son funcionalmente equivalentes a las herramientas que se incluyen con. Mono y Portable.. Java y C. BeOS. Empecé por el examen de una serie de limitaciones y complejidades que se encuentran dentro de las tecnologías antes de.NET aims to target as many operating systems as possible (Win32. El Common Language Runtime (CLR) es capaz de albergar cualquier. Ambos Mono y Portable. Me envolvió con una breve frente a la naturaleza independiente de la plataforma de la . and so on).NET . NET utilizando dotNetFx35setup. NET Framework de Microsoft 3. se exploró el papel de la Common Language Specification (CLS) y el Sistema de tipos común (CTS). visita de la Cruz-plataforma de desarrollo NET:. tales como Mono o Portable.NET proporcionar una ECMA C # compilador compatible.org Portable. Resumen El objetivo de este capítulo fue establecer el marco conceptual necesario para el resto de este libro.5 SDK. Fedora. y siguió con una visión general de cómo hacerlo. Distribution Meaning in Life http://www. Portable. Solaris. Además. las asambleas contienen CIL instrucciones (además de los metadatos de tipo y el manifiesto del ensamblado) que se compilan en instrucciones específicas de la plataforma mediante un "justo a tiempo (JIT). motor NET. Portable.NET. Mac OS X.NET colectivamente buque con un compilador de Visual Basic.com The Mono project is an open source distribution of the CLI that targets various Linux distributions (e.. y Microsoft.distribución.dll y asociados). SuSE. NET binaria (también conocido como conjunto) que no cumplen con las normas del código administrado.

con un examen de trabajar con el VB 2008 compilador de línea de comandos. Dicho esto. En este capítulo se cierra con una breve discusión sobre el papel de la Microsoft.exe. . documentos técnicos. El papel de. Sin embargo. Capítulo 3 comenzará formalmente el examen de el lenguaje Visual Basic. El capítulo se abre. el. NET Framework 3.exe). Con este fin. puede elegir entre numerosas herramientas para construir sus aplicaciones. NET. de línea de comandos de servicios públicos. Después de un breve examen de Visual Basic 2008 Express IDE. Este rivales IDE la funcionalidad de muchos comerciales.5 Software Development Kit (SDK). yo apuesto a que también están interesados en trabajar con entornos de desarrollo de múltiples funciones integradas (IDE). Visual Studio 2008. y el más simple de todos los editores de texto. con lo que te da todo lo que necesite de la caja. no se preocupe.Construcción de Visual Basic 2008 Aplicaciones Como programador de VB 2008. no tienen necesidad de instalar manualmente el. nNota. el Bloc de notas (notepad. opciones de desarrollo NET. a su vez su atención a Visual Studio 2008.dll montaje y un estudio de adicionales. nNota A lo largo de este capítulo. Si no está familiarizado con la sintaxis. el punto de este capítulo es proporcionar una gira por varios. Este SDK le proporciona numerosos compiladores administrados. 35 CHARTEP2 si usted es de hecho va a estar utilizando Visual Studio 2008 o Visual Basic 2008 Express.0.5 SDK. código de ejemplo. el SDK se instala automáticamente.exe y un simple editor de texto. verá una serie de construcciones de programación VB no hemos formalmente examinados. Entornos NET (y es gratis!). Al instalar cualquiera de estos productos. NET Framework 3. vbc. en el que sólo tenía un único IDE enfrentarse a: Microsoft Visual Basic 6.VisualBasic.5 SDK (dotNetFx35setup. Herramientas de desarrollo NET tal vez desee investigar en su tiempo libre. NET descarga (Http://msdn. incluyendo. NET es la creencia de que los programadores deben comprar una copia de Visual Studio para construir sus aplicaciones Visual Basic. NET utilizando el programa de descarga gratuita. por supuesto.com/netframework). La verdad del asunto es que son capaces de construir cualquier tipo de.exe) pueden obtenerse en el sitio web. se le presentó a un IDE de código abierto llamado SharpDevelop. y completar un documentación del sistema. NET bibliotecas de clases base.5 SDK Un error común en relación con. Mientras que usted podría trabajar a través de este texto completo mediante otra cosa que vbc. NET Framework 3.microsoft. NET Framework 3. sin embargo. Este enfoque es muy diferente del mundo de VB6.

Si bien es cierto que usted nunca podrá decidir construir una aplicación a gran escala utilizando el compilador de línea de comandos. NET sin necesidad de modificar la variable PATH ajustes. escriba el siguiente comando y pulse la tecla Intro: vbc -? Si todo va bien. Figura 2-1. vb a mano. vbc. . 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). cada uno de los cuales contiene varios .5 SDK. puede ahorrar un poco de tiempo. asegúrese de instalar el SDK antes de continuar. Muchas de estas herramientas son expulsados del símbolo del sistema. NET Framework 3. La VB 2008 la línea de comandos del compilador (vbc. terminará con una serie de nuevos directorios en el disco duro local. por lo que si desea utilizar estos servicios desde cualquier ventana de comandos de Windows. es importante comprender la conceptos básicos de cómo compilar los archivos *. • 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. El Visual Studio 2008 del símbolo del sistema Cuando se instala el. NET con el VB 2008 compilador de línea de comandos. Suponiendo que ha instalado un entorno.si no se va a usar un IDE de Microsoft como usted trabaja a través de este texto. NET IDE). tendrá que registrar estos caminos con el sistema operativo. Visual Studio 2008 o Visual Basic 2008 Express.exe.exe) 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 herramientas de desarrollo. 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. NET. que son capaces de crear. Mientras que usted puede actualizar la variable PATH de forma manual para hacerlo (que no se molestará en hacer aquí). 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. 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).

/target:winexe This option builds an executable Windows application. This is the default target. guarde el archivo en una ubicación conveniente (por ejemplo. 3") End Sub End Module Una vez que haya terminado. una serie de utilidades importantes son accesibles sólo desde la línea de comandos.vb.vb file. • Desea profundizar el conocimiento de VB 2008. En este sentido.exe con el VB 2008 compilador de línea de comandos y el Bloc de notas. El primer punto de interés es entender cómo especificar el nombre y tipo de reunión para crear (por ejemplo. NET herramientas de construcción como de MSBuild o de NAnt.dll. usted necesita una cierta de código fuente. NET IDE libre. /target:exe This option builds an executable console application. the assembly name is the same as the name of the initial input *. En primer lugar. 2. Output-centric Options of the VB 2008 Compiler Option Meaning in Life /out This option is used to specify the name of the assembly to be created. aWindows Forms MyWinApp. NET Framework 3.exe Para ilustrar cómo construir una. una biblioteca de código llamado MathLib. Although you are free to build Windows-based applications using the /target:exe flag. que son en última instancia. La construcción de aplicaciones con Visual Basic 2008 vbc. es edificante para ver lo que ocurre detrás de las escenas. Table 2-1. Como se verá a lo largo de este libro. /target:library This option builds a single-file *. and thus may be omitted when building console applications. By default.5 SDK.exe 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.Modules are elements of multifile assemblies (fully described in Chapter 15).exe. the /target:winexe flag prevents a console window from appearing in the background. Abra el Bloc de notas y escriba lo siguiente: ' A simple VB 2008 application. una consola aplicación denominada MyShell. vamos a conocer las opciones fundamentales de la VB 2008 compilador.• Tiene intención de hacer uso de sistemas automatizados.exe cómo manipular la entrada de VB 2008 archivos.) Cada posibilidad es representado por una bandera específica se introdujo vbc. . Cuando se utiliza para construir entornos de desarrollo gráfico aplicaciones. Ahora. /target:module This option builds a module. C: \ VbcExample) como TestApp.WriteLine("Testing! 1. instruir vbc.exe como parámetro de línea de comandos (ver Tabla 2-1). vamos a construir un simple montaje de un solo archivo llamado TestApp. Otro buen producto derivado de trabajar con vbc.dll assembly. Imports System Module TestApp Sub Main() Console.exe nombre. etc.

como / t en lugar de / target (puedes leer todas las abreviaturas introduciendo vbc /? en el símbolo del sistema). NET. que También podría elaborar TestApp.exe El siguiente. recuerdo del capítulo 1 que mscorlib.dll (el ensamblado que contiene el tipo System. escriba el nombre del ejecutable y pulsando la tecla Intro. si desea especificar un único nombre para su montaje.exe ahora se puede ejecutar desde la línea de comandos. le dio el nombre del archivo de entrada inicial.vb en una aplicación de consola denominada TestApp. Si todo va bien. TestApp. por lo tanto el ejecutable se llamará TestApp. Figura 2-2.vb Aquí no se especifica explícitamente un pabellón de entrada / salida.exe. Por ejemplo.vb TestApp. vamos a examinar cómo compilar una aplicación que hace uso de tipos definidos en un archivo externo .exe en acción Hacer referencia externa Asambleas Uso vbc. 3 "imprimir a la ventana de comandos (ver Figura 2-2). dado que el modificador / t: exe bandera es la salida por defecto utilizado por el compilador de VB 2008. vb código mediante el comando cd: cd c:\VbcExample A continuación.Console) se hace referencia automáticamente durante la compilación . 2. Sin embargo. debería ver el mensaje "Prueba! 1.Para compilar TestApp.Console. Hablando de eso. sólo en caso de que usted se está preguntando cómo el VB 2008 compilador entiende su referencia al tipo System. 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.vb simplemente escribiendo lo siguiente: vbc TestApp.exe.vb Además. puede introducir el siguiente comando: vbc /target:exe /out:MyFirstApp.exe TestApp. abrir un Visual Studio 2008 del símbolo del sistema y cambie al directorio que contiene la fuente *. usted puede ahorrarse algunos golpes de teclado mediante la especificación de los siguientes: vbc /t:exe TestApp.vb También tenga en cuenta que la mayoría de las opciones del compilador Visual Basic 2008 admiten una versión abreviada. no después): vbc /target:exe TestApp.

vb Si ahora vuelve a ejecutar la aplicación. Supongamos que han escrito una clase adicional (de nuevo. Imports System ' Add this! Imports System.proceso.WriteLine("Testing! 1.exe La encarnación actual de la aplicación TestApp. Dado que usted ha hecho uso de la clase de mensajes. vb código fuente archivo. Para ilustrar el proceso de la referencia externa ensamblados adicionales. Su primera aplicación de Windows Forms Compilación de varios archivos de código fuente utilizando vbc.exe fue creado usando un solo *. 3") ' Add this! MessageBox. vb para mantener su base de código un poco más flexible.Show("Hello!") End Sub End Module Observe la referencia al espacio de nombres System.vb y modificarlo de la siguiente manera ' A simple VB 2008 application.Windows. la mayoría de proyectos se componen de varios archivos *.vb: ' The HelloMessage class Imports System . 2. vb. usted debe ver lo que aparece en la figura 2. debe especificar el System. Abra el archivo TestApp.dll ensamblado utilizando la bandera de referencia / (que puede ser abreviado a / r): vbc /r:System. vb sola. En la línea de comandos. Si bien es perfectamente lícito tener en todos sus. Recuerde que cuando usted explícitamente una lista de los espacios de nombres utilizados en un determinado *.exe que contiene el conjunto de espacios de nombres importados.Windows.Forms.exe para mostrar un cuadro de mensaje de Windows Forms. Figura 2-3.3.dll TestApp. tipos de redes se definen en un archivo *. se evita la necesidad de hacer uso de los nombres completos (que pueden dar lugar a calambres mano). vamos a actualizar la Aplicación TestApp. debe informar a vbc. utilizando el Bloc de notas) contenida en un nuevo archivo llamado HelloMsg.Windows.Forms.Windows.Forms a través de la VB 2008 las importaciones de palabras clave (introducido en el capítulo 1). además de la salida de la consola.Forms Module TestApp Sub Main() Console.

el compilador de VB 2008 le permite hacer uso del carácter comodín (*) para informar a vbc.exe para incluir todos los archivos *.System.Windows. Hacer referencia a varios ensamblados externos Uso de vbc.Show("Hello!") ' Exercise the HelloMessage class! Dim hello As New HelloMessage() hello.Drawing. No es necesario especificar múltiples externos asambleas para el ejemplo actual.Windows. Imports System ' Don't need this anymore. actualizar su clase TestApp hacer uso de este nuevo tipo.Windows. Aquí está la completa actualización: ' A simple VB 2008 application.dll *. 2.Forms Class HelloMessage Sub Speak() MessageBox. 3") ' Don't need this anymore either.Windows.Windows.dll.Forms Module TestApp Sub Main() Console.Imports System.Show("Hello Again") End Sub End Class Suponiendo que usted ha guardado este archivo nuevo en la misma ubicación que el primer archivo (por ejemplo.vb .vb Como alternativa. y comentar la lógica anterior de Windows Forms.vb HelloMsg. la salida es idéntica.dll TestApp.exe En una nota relacionada.dll *. lo que si necesita hacer referencia a varios ensamblados externos utilizando vbc.exe? Simplemente una lista de cada conjunto mediante una lista delimitada por comas. La única diferencia entre los dos solicitudes es el hecho de que la lógica actual se ha dividido en varios archivos.WriteLine("Testing! 1. vb que figuran en el directorio del proyecto como parte de la corriente construcción: vbc /r:System.Forms. sino que sigue algunos ejemplos de uso: vbc /r:System.vb Cuando se ejecuta el programa de nuevo. ' Imports System.Speak() End Sub End Module Usted puede compilar el VB 2008 archivos haciendo una lista de cada archivo de entrada explícitamente: vbc /r:System. C: \ VbcExample). ' MessageBox.Forms.Forms.

exe listados en el archivo de respuesta TestApp. Por lo tanto. los comentarios se denotan con el carácter #): # This is the response file # for the TestApp. Supongamos que Ha creado un archivo de respuesta denominado TestApp. su montaje es de hecho el nombre MyCoolApp.rsp). que son capaces de generar la aplicación completa de la siguiente manera (nótese el uso del símbolo @): vbc @TestApp. que también son capaces de especificar varios archivos *. ya que se encuentran! Por lo tanto. si después de una lista de las banderas archivo de respuestas.rsp @ ThirdFile. rsp tarde puede anular las opciones en un archivo de respuesta anterior.exe app # of Chapter 2.exe). /t:exe /out:TestApp.exe *.Forms. suponiendo que este archivo se guarda en el mismo directorio que el VB 2008 archivos de código fuente que se compilado. estos archivos en un final *. # External assembly references. RSP (respuesta) de extensión.exe Como puede imaginar.exe (en lugar de MyCoolApp.rsp que contiene los siguientes argumentos (como se puede ver.dll # Output and files to compile (using wildcard syntax). Si toma este enfoque. la bandera tienen prioridad en el archivo de respuesta.rsp el nombre de la asamblea todavía se TestApp. 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 *.exe @TestApp. dada la / out: bandera TestApp. los argumentos de línea de comandos en un archivo *. en el siguiente comando conjunto. Por convención.rsp. vbc @ @ FirstFile. si usted fuera a construir un complejo de VB 2008 la aplicación en el símbolo del sistema.Trabajar con archivos de respuesta vbc.exe . Sin embargo. VB archivos de respuestas 2008 contienen todas las instrucciones que se utilizarán durante la elaboración de su generación actual. se tenga en cuenta que el compilador procesa las opciones del comando.Windows. vb código.rsp Si la necesidad se presente. Para ayudar a disminuir su carga de escribir.rsp SecondFile.vb Ahora. su vida se llena de dolor a medida que escribe en las banderas que especifican numerosos ensamblados de referencia y *. /r:System. Así. el compilador de VB 2008 honra la utilización de archivos de respuestas. si usted fuera a entrar en vbc /out:MyCoolApp. rsp especificado. rsp como entrada (por ejemplo.

# Reference the common Framework libraries /r:Accessibility.Web.dll /r:System.Transactions.dll /r:System.dll /r:System.dll /r:System.dll /r:System.Runtime.dll /r:System.dll /r:System.dll /r:System. se llega a comprender el papel de muchos de estos.Data. Si se va a abrir este archivo con el Bloc de notas.XML.dll /r:System.dll /r:System.RegularExpressions.Dll /r:System.dll /r:System.Vsa.Serialization.dll /r:System.Drawing.dll /r:System. Independientemente de donde se especifica ensamblados externos (antes. NET bibliotecas a lo largo del texto.Windows.Formatters.dll /r:System.dll .dll /r:System.Deployment.Security.DirectoryServices. para sentar las bases.dll /r:System.Forms. aquí es una mirada dentro de vbc.Runtime.dll /r:System.Activities.Design.Data.ServiceProcess.dll /r:System.Remoting.EnterpriseServices.Services.dll /r:System.5).rsp) El punto final que se hará con respecto a los archivos de respuestas es que el compilador de VB 2008 tiene asociado un por defecto del archivo de respuestas (vbc.Runtime.OracleClient.Configuration.dll /r:System.NET \ Framework \ v3.rsp).dll /r:System. que se encontraba con que numerosos NET ya se han especificado utilizando el R /:.rsp: # This file contains command-line options that the VB # command-line compiler (VBC) will process as part # of every compilation.Workflow.Install.vbc @TestApp.dll /r:System.ServiceModel.dll /r:System.Web. Sin embargo.Mobile. C: \ Windows \ Microsoft. El predeterminado de archivo de respuestas (vbc.Linq.Core.rsp /out:MyCoolApp.Workflow.dll /r:Microsoft.ComponentModel. unless the "/noconfig" option # is specified. o dentro de un archivo de respuestas).dll /r:System. después.Soap.Drawing. el resultado final es un resumen de cada conjunto de referencia.Xml.dll /r:System.dll /r:System.Web. A medida que era de esperar.dll /r:System. bandera.Serialization.dll /r:System.Runtime.Management.dll /r:System.exe sí mismo (por ejemplo.Messaging.dll /r:System. que se encuentra en el mismo directorio que vbc.Web.Design.Workflow.Configuration.exe nNota La bandera de referencia / es acumulativo.

exe *. este archivo automáticamente se hace referencia.dll vbc.Data.Extensions.dll /r:System.rsp. Para hacer frente a esas necesidades.dll # Import System and Microsoft.exe".DataSetExtensions./r:System. Cuando usted está construyendo su VB 2008 con programas de vbc. la actual aplicación TestApp. no ofrece nada en el camino de desarrollador productividad.Linq. El Visual Basic 2008 Express y Visual Studio 2008 IDE no se ajusta automáticamente las referencias a estos colecciones. NET se va a generar. RSP. vb archivos con un editor que soporta (como mínimo) la palabra clave coloración y la integración con el compilador de VB. aun cuando la oferta de un archivo *. muchos de los cuales son completamente gratis. La suerte quiso que numerosas herramientas existen. Si desea conocer más detalles sobre la funcionalidad de vbc.vb En el caso de que desea desactivar la lectura automática de vbc. de búsqueda de. En este punto.dll /r:System. Además.Linq /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.Design. permítame presentarle la siguiente opción de desarrollo.exe. Edificio. NET Usando SharpDevelop Mientras que el Bloc de notas está muy bien para la creación de simple. el VB 2008 compilador de línea de comandos tiene muchas otras opciones que se pueden utilizar para controlar el modo en el archivo. Programas NET.exe.ServiceModel. SharpDevelop es un IDE de código abierto y rico en .Linq /imports:System.dll /r:System.Web. Lo ideal sería al autor *.exe podría ser compilado correctamente con el siguiente comando conjunto (como se hace referencia en System. plantillas de proyecto y herramientas de base de datos de la manipulación.rsp /noconfig Obviamente.rsp): vbc /out:TestApp. esperamos para construir nuestra VB programas que utilizan una herramienta que apoya las capacidades ricas de IntelliSense.VisualBasic /imports:System. puede especificar el / noconfig opción vbc @TestApp.5 documentación para el término "vbc. usted debe tener a manejar los conceptos básicos.Forms. los diseñadores para la creación de gráficos interfaces de usuario. nSource Código VbcExample El proyecto se incluye en el Capítulo 2 subdirectorio.Xml.Data. NET: Sharp Desarrollar (también conocido como # develop).VisualBasic /imports:System /imports:Microsoft.dll /r:System. NET Framework 3. Habida cuenta de la presencia del archivo de respuesta predeterminada.Extensions.Web.Web. sin embargo.Windows.

caja de herramientas (para arrastrar y colocar los controles en el diseñador). SharpDevelop proporciona numerosas mejoras de la productividad y en muchos casos es la función ricos como Visual Studio 2008 Standard Edition. usted asume han creado una aplicación para Windows llamado VB MySDWinApp (ver Figura 2-4). seleccione la ficha Diseño en la parte inferior de la ventana principal para activar el diseñador Principio del formulario . Por ejemplo. se Asegúrese de descargar la última y mejor).com (a la hora de escribir este artículo. sin embargo. NET Framework 3. NET lenguaje llamado Boo. 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.funciones que puede utilizar para construir. De hecho. Figura 2-4. y la capacidad de fragmento de código • Un cuadro de diálogo Agregar referencia a los conjuntos de referencia externa. cs manualmente o ejecutar un programa de instalación para instalar SharpDevelop en su equipo de desarrollo.2.5 SDK Impresionante para un país libre IDE. la finalización de código.: La construcción de un proyecto de prueba simple Una vez que haya instalado SharpDevelop. la versión actual es de 2. es interesante señalar que fue escrito enteramente en C # (y podría tener la misma facilidad se ha escrito en Visual Basic). Figura 2-5 ilustra la configuración de un tipo de botón utilizando el IDE (por defecto. el IDE se mostrará el código fuente de la corriente forma. Aquí está una lista de resultados parciales de algunas de las ventajas principales: • IntelliSense. NET Utilidad de construcción) • Integración con el. El SharpDevelop Nuevo proyecto de cuadro de diálogo Como Visual Studio. Más allá del hecho de que este IDE es completamente gratuito. tiene la opción de descargar y compilar los archivos *. así como el uso de CIL y una inspirada en Python. Ambas distribuciones se pueden obtener de http://www. y una ventana Propiedades para configurar la apariencia de cada elemento de la interfaz de usuario. la opción de menú Archivo ANew asolution permite que usted escoja qué tipo de proyecto que desea generar (y en el que. dispone de un diseñador de interfaz gráfica de usuario. NET utilizando Visual Basic o C #. ¿no? Aunque este capítulo no se aplica a cada uno de estos puntos en detalle. NET unidad de servicios públicos de prueba) y Nant (un archivo. NET).sharpdevelop. vamos a caminar a través de algunos artículos de interés.

Si desea más información. Microsoft introdujo una línea completamente nueva de IDEs que caen bajo la denominación de "Express" productos (http://msdn. . Cancelar Escuchar Leer fonéticamente Final del formulario traducción del inglés al español Figura 2-5. SharpDevelop fue diseñado para imitar la mayor parte de la misma funcionalidad que se encuentran dentro de Microsoft . la finalización de código.com/express).microsoft. usted encontrar la espera de IntelliSense. 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 ASP. sin embargo. NET.NET • 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. nNota Usted es libre de utilizar SharpDevelop medida que se trabaja a través de esta edición del texto. Hasta la fecha.Quizás quisiste decir: You can compile a VB 2008 files by listing each input file explicitly: Escribe texto o la dirección de un sitio web o traduce un documento. Edificio. NET utilizando Visual Basic 2008 Express Durante el verano de 2004. hay varios miembros de la familia Express (todos los cuales son completamente gratis y apoyado y mantenido por Microsoft Corporation). No se sabe. Teniendo en cuenta este punto. 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. NET IDE (que examinaremos a continuación). que algunos de los capítulos pueden especificar las opciones de menú. y características integradas de ayuda (ver Figura 2-6). no voy a profundizar en todas las características de este de código abierto. basta con utilizar el menú Ayuda siempre. herramientas o métodos abreviados de teclado que son específicos a Visual Studio 2008.

Edificio. se tenga en cuenta. Visual Studio 2008. que no ofrecen un paseo a través de este IDE en particular aquí. estudiantes y desarrolladores Algunas características únicas de Visual Basic 2008 Express Versiones En general. herramientas o métodos abreviados de teclado que son específicos de Visual Studio 2008. ingeniero de software NET.0 y 3.5 de. Por supuesto.aficionados. Figura 2-7. las posibilidades son muy buenas que su empleador ha comprado IDE principal de Microsoft. el Agregar referencias cuadro de diálogo. que algunos de los capítulos pueden llamar a las opciones de menú. Sin embargo. Al igual que SharpDevelop. este poder tiene un precio. nNota Hay un asombroso número de miembros dentro de Visual Studio 2008 de la familia. Debido a la apariencia de Visual Basic 2008 Express es tan similar a la de Visual Studio 2008 (Y. Visual Basic 2008 Express ofrece unos pocos (importante) las características no disponibles actualmente en SharpDevelop. Como se puede sospechar. nNota Usted es libre de utilizar Visual Basic Express como usted trabaja a través de esta edición del texto. que se varían en función de la versión de Visual Studio 2008 que usted compra.2. Esta herramienta es de lejos la más rica en características y lista para la empresa IDE examinados en este capítulo. cada versión proporciona un conjunto único de características. capacidad de IntelliSense. NET 3. 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. NET aficionados y estudiantes.com/vstudio).Visual Basic 2008 Express cuenta con soporte integrado para. los productos Express están reducida de sus homólogos de Visual Studio 2008 y afectan principalmente a los. Visual Basic 2008 Express ofrece varias herramientas de navegación de objetos. SharpDevelop). NET API. que muestra el uso de Visual Basic Express al autor el marcado XAML para un proyecto de WPF. NET utilizando Visual Studio 2008 Si usted es un profesional. un diseñador de formularios Windows Forms. Una vez más. 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. por sus esfuerzos de desarrollo (http://msdn. sin embargo.microsoft. y la expansión de las plantillas del código. Sin embargo. hasta cierto punto. Mi .

soporte de fragmentos de código. A diferencia de muchos de los IDE que ya hemos examinado. cree una nueva aplicación de consola de Visual Basic . es posible que examinar una opción que no es proporcionada por el IDE. objetos y las utilidades del proyecto de navegación. Orientación. tendrá que insertar manualmente el siempre *. En el peor de los casos.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. puede cargar el ejemplo actual en Visual Studio 2008 (o Visual Basic 2008 Express) haciendo doble clic en el ejemplo de archivo *. Sin embargo. Si no está utilizando Visual Studio 2008/Visual Basic 2008 Express. 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. 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. Visual Studio 2008 ofrece numerosas adiciones. Algunas características únicas de Visual Studio 2008 Visual Studio 2008 se suministra con la espera diseñadores de interfaz gráfica de usuario. Sin embargo. la manipulación de bases de datos herramientas. usted aprenderá más acerca de Visual Studio 2008 IDE en su caso. Esto no es libro.apress. vb en el área de trabajo del proyecto del IDE. NET Framework Uso del nuevo proyecto Cuadro de diálogo Para examinar algunas de las características básicas de Visual Studio 2008.com). 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. que le permite crear objetos e invocar a sus miembros directamente en el IDE Para ser completamente honesto. y un sistema de ayuda integrado. A medida que el progreso a través del texto. entiendo que ser propietario de una copia de este IDE no es necesario para utilizar esta edición del texto. nNota Una vez descargado el código fuente de este libro desde el código fuente / zona de Descargas de la Apress sitio web (http://www. quiero señalar algunas de las características principales de las páginas que siguen. sln.

el ficha muy recientes útil un recuento actualizado de las asambleas con frecuencia se hace referencia se han utilizado en otros proyectos.5) utilizando el cuadro de lista desplegable en la parte superior derecha de la Nuevo proyecto de cuadro de diálogo. 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. Figura 2-8. Para cada proyecto en este texto. Como se puede ver en la Figura 2-8. NET Framework desea construir en contra (2. Para ver todos los aspectos de su proyecto. 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). En cualquier caso. sin embargo. De forma predeterminada. .5. . debe hacer clic en el botón Mostrar todos los archivos de la barra de herramientas del Explorador de soluciones (ver Figura 2-9). NET Framework.0.Visual Studio 2008 ahora le permite orientar una determinada versión de.0 o 3. 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. El NET (vea la Figura 2-10) muestra una serie de uso general NET. sólo tiene que dejar la selección por defecto de .(Nombre Vs2008Example) utilizando el elemento de menú Archivo ANew äProject. Visual Studio 2008 ahora (por fin) admite la posibilidad de seleccionar qué versión de. NET Framework 3. NET en su disco duro. Hacer referencia a ensamblados externos Cuando usted necesita a las asambleas de referencia adicional. 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. Figura 2-9. 3. Además. 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). que será diferente en función del tipo de proyecto seleccionado y la versión del Marco está compilando en contra. Ver la ficha le permite desplazarse a cualquier conjunto..

los recursos de inserción de aplicaciones y configurar los eventos pre y generación posterior. El propósito de esta utilidad es para mostrar todos los tipos en el proyecto actual desde una perspectiva más orientada a objetos la perspectiva (en lugar de una visión basada en archivos del Explorador de soluciones). Podrás ver distintos aspectos de la ventana de mi proyecto a medida que avanza a través de este libro. El cuadro de diálogo Agregar referencia Ver las propiedades del proyecto Por último. si toma algún tiempo para echar un vistazo. podrás ver que se puede establecer la seguridad diferentes configuración. Figura 2-11. Como era de suponer. los clics del ratón sensible al contexto. observe un icono llamado Mi proyecto en el Explorador de soluciones. Examinador de objetos se abre automáticamente con el montaje seleccionado resaltado. Visual Studio 2008 Tecnología de fragmentos de código Visual Studio 2008 (así como Visual Basic 2008 Express) también tiene la capacidad de insertar complejos bloques de código VB 2008 con selecciones de menú.Figura 2-10. seleccionar el conjunto de desea investigar (véase la Figura 2-13). Figura 2-13. El Examinador de objetos de utilidad nNota Si hace doble clic en un icono de ensamblado de la carpeta Referencias del Explorador de soluciones. con fuerza el nombre de su conjunto. El proyecto Mi ventana La utilidad de la Vista de clases La siguiente herramienta para examinar es la utilidad de la Vista de clases. En pocas palabras. Al hacer doble clic en este elemento. El panel superior muestra el conjunto de espacios de nombres y sus tipos. mientras que el panel inferior muestra a los miembros con el tipo seleccionado (vea la Figura 2-12). un fragmento de código es un bloque predefinidos de Visual Basic 2008 código que se expandirá en el archivo de código activo. Sin embargo. y / o el teclado atajos usando fragmentos de código. implementar la aplicación. La Vista de clases de utilidad CAPÍTULO 2 EDIFICIO n Visual Basic 2008 APLICACIONES 51 La utilidad de Examinador de objetos Visual Studio 2008 también proporciona una utilidad para investigar el conjunto de ensamblados de referencia dentro de su proyecto actual. Activar el Examinador de objetos utilizando el menú Ver y. Figura 2-12. que se presentan con un editor de configuración de proyectos complejos (véase la Figura 2-11). que se puede abrir desde el menú Ver. a continuación. fragmentos de código puede ser de gran .

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. podrás ver que los fragmentos de código relacionados se agrupan en una categoría específica (patrones de código. Por ejemplo. ubicado en el directorio C: \ Archivos de programa \ Microsoft Visual Studio 9. Una vez que seleccione un fragmento determinado. Inserting VB 2008 code snippets Figure 2-15. se encuentra el código relacionado se expande de forma automática (prensa la tecla Esc para cerrar el menú pop-up). es muy sencillo la construcción de fragmentos de código personalizados.ayudar a aumentar la productividad. Desde aquí. 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). fragmento de forma predeterminada). dado que cada fragmento es simplemente una descripción XML del código que se inserta dentro del IDE.) Para este ejemplo. cada código fragmento de código se define dentro de un documento XML (teniendo una extensión *.0 \ VB \ Snippets \ 1033 de la guía. Visual Studio 2008 define un buen número de fragmentos de código. etc.com. haga clic en una línea en blanco dentro de su método Main () y activar el menú Insertar fragmento de código. seleccione los fundamentos Amath categoría y luego activar el calcular un pago mensual de un préstamo fragmento (ver Figura 2-14).15 Figure 2-14. La utilidad Diseñador de clases le permite ver y modificar las relaciones . el mejor manera de aprender acerca de cada posibilidad es simplemente a través de la experimentación. Muchos fragmentos de código predefinidos identificar específicos "marcadores" para el contenido personalizado. Sin duda.microsoft. que son capaces de recorrer cada selección para modificar el código según sus necesidades (véase la Figura 2. Con la tecla Tab. The inserted snippet As Como puede ver. datos. dado que la herramienta va a generar los estados código necesario (en lugar que nosotros!). Aplicación de Windows Forms. 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 http://msdn. se encuentran tres regiones se destacan dentro de la ventana de código. una vez que se activa el calcular un pago mensual en un Fragmento de Préstamo. Bajo el capó. De hecho. Si bien el artículo se muestra la construcción de fragmentos de código C #. Para ver esta funcionalidad de primera mano.

(Tenga en cuenta que debe tener un diagrama de clase como la ventana activa para ver esta caja de herramientas. Figura 2-17. Si haga clic en la imagen de flecha. vb. 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).de los tipos (clases. Con esta herramienta. usted encontrará los iconos de clase que representan a las clases del proyecto actual.17). el primer paso es insertar un nuevo archivo de diagrama de clase. La ventana Detalles de clase no sólo le muestra la detalles del elemento seleccionado en el diagrama. 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). Para trabajar con este aspecto de Visual Studio 2008. usted puede agregar visual (o eliminar) los miembros (o desde) un tipo y que su modificaciones que se recogen en el archivo correspondiente *. 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. Figura 2-18. Además. 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. Ten en cuenta que Visual Studio 2008 le mostrará todos los miembros en el proyecto actual de forma predeterminada. se le presentará con un diseñador de vacío. Figura 2-16. el IDE automáticamente agregar un diseñador visual para cada tipo en los archivos de código. En este punto. simplemente haga clic derecho y seleccione Eliminar en el menú contextual (esto No elimine el archivo de código relacionado). puede arrastrar los archivos *. Hay muchas maneras de hacerlo. Una vez que usted lo hace.) Al hacerlo. sino también le permite modificar los actuales miembros y los miembros de insertar nuevos sobre la marcha (véase la Figura 2-18). Si no se selecciona el icono del proyecto antes de insertar un archivo de diagrama de clase. interfaces. al modificar un determinado archivo de VB 2008. puede mostrar u ocultar los miembros del tipo (ver Figura 2. cambios se reflejan en el diagrama de clase.16). enumeraciones y delegados) en el proyecto. el IDE crea automáticamente nuevas . Si desea eliminar un elemento determinado en el diagrama. vb desde el Explorador de soluciones y soltarlos en el diseñador para ver cada tipo. estructuras.

NET (*. verá que se ha actualizado en consecuencia (que no encontrará en los comentarios de código siguiente. arrastre una nueva clase del Diseñador de clases Cuadro de herramientas al Diseñador de clases. Esto puede ser extremadamente útil cuando se desea probar un método específico. por supuesto): Public Class Car ' Public data is typically a bad idea. Si realiza estos pasos correctamente.vb archivo). 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. La caja de herramientas Diseñador de clases A modo de ejemplo. utilizando la ventana Detalles de clase. Figura 2-19. Este aspecto de la el IDE le permite crear rápidamente una instancia de una clase e invocar sus miembros sin la necesidad de para compilar y ejecutar toda la aplicación. Agregar un campo con la ventana Detalles de clase Si ahora mirar el VB 2008 la definición de la clase de coches (en el recién generado Car. agregue otra nueva clase para el diseñador llamado Sportscar. A continuación. Figura 2-20. Ahora.Visually que se derivan de una clase existente Para completar este ejemplo. El nombre de esta clase de coches en el cuadro de diálogo resultante.Format("Name of this car is: {0}". que acaba de derivados de la clase Sportscar de coches (ver Figura 2-21). mueva el cursor del ratón en la parte superior del icono de la clase de coche y haga clic en el ratón. petName) End Sub End Class El banco de prueba de objetos Otra buena herramienta visual que proporciona Visual Studio 2008 es objeto de prueba de banco (OTB). Esto también es muy útil cuando usted está construyendo una biblioteca. Public petName As String End Class Ahora. usted cavar en el detalles de diseño de clases a partir del próximo capítulo): Public Class SportsCar Inherits Car Public Function PrintPetName() As String petName = "Fred" Return String.VB 2008 definiciones de tipos en el fondo. pero no desean pasar por docenas de líneas de código para hacerlo. ' however it will simplify this example. Figura 2-21. A continuación. agregue un público String Petname campo denominado (véase la Figura 2-20). dll) y desea probar rápidamente su . seleccione el icono de la herencia de la Clase Designer Toolbox y haga clic en el icono de Sportscar.

se encuentra la documentación completa de todas y cada espacio de nombres en las bibliotecas. NET Framework 3. se encuentra el objeto alojado en el IDE. y existencia dolorosa como desarrollador de. así. Para trabajar con la OTB. y la parámetros de un miembro determinado. usted debe estar dispuesto a subirse las mangas y profundizar en la documentación presentada. NET Framework 3. la ventana Ayuda dinámica muestra un conjunto de enlaces sobre el tipo System. al ver la página de ayuda para un mismo . El IDE automáticamente te llevará a la página de ayuda correcta. los miembros de un determinado tipo. tipos de redes (que suman así a los miles). Haga clic en el icono del objeto e invocar el PrintPetName () método (véase la Figura 2-22). Visual Studio 2008 proporciona la ventana Ayuda dinámica (se accede a través de la Ayuda adinámico selección de menú). Por otra parte. y lleno de información útil.23. Por ejemplo. NET. Figura 2-23. y desde el menú contextual resultante seleccione Crear InstanceäSportsCar (). tipo o método y pulse la tecla F1. puede optar por guardar este nuevo objeto String en la OTB.Viewing nuestro valor devuelto por una función El sistema de ayuda integrado El aspecto final de Visual Studio 2008 debe ser cómodo con desde el principio es la plena sistema de ayuda integrado. activar la opción Ayuda äContents menú de la documentación. Por ejemplo. Se abrirá un cuadro de diálogo que le permite nombrar el temporal variable de objeto (y el suministro de los argumentos de constructor. la OTB le mostrará el valor devuelto por una función. El. haga clic en el tipo que desea crear con el Diseñador de clases.miembros sin necesidad de crear una aplicación de las pruebas por separado. que están condenados a una frustración de largo. menú. Basta con ubicar el cursor del ratón dentro de un palabra clave.net Framework Nodo de referencia de la documentación. etc) es seleccionado. Si te resistes. muy legible. después de lo cual puede invocar a varios miembros del tipo String. . nNota Otro atajo útil es la tecla F1 de Visual Studio 2008. palabra clave de código fuente. En el marco del . si es necesario).net a.5 SDK documentación. En primer lugar. El Visual Studio 2008 objetos de Banco de Pruebas Una vez que lo hace. Dado el gran número de predefinidos . Figura 2-24. También debe ser consciente de un subdirectorio muy importante de. Una vez finalizado el proceso. NET base de la colección de referencia Cada nodo define el conjunto de tipos en un espacio dado.5 SDK (también conocido como el MSDN Library) es muy buena. NET Framework SDK para el Desarrollo a. que cambia su contenido (dynamically!) sobre la base de lo que el tema (ventana. NET base (véase la Figura 2-24).net marco a. Observe en la figura 2. que es una cadena establecida en el valor "Nombre de este coche es: Fred". haga clic en el tipo Sportscar. si coloca el cursor en la consola clase.Console. Figura 2-22.

VisualBasic. nNota Me gustaría subrayar una vez más la importancia de trabajar con la suministrada.0. que define los tipos que proporcionan la misma funcionalidad de la legado VB6 construcciones. Module Module1 .dll. 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. cada uno de estos espacios de nombres están automáticamente disponibles para cada archivo *.tipo.25). independientemente de su tamaño. NET. muy nodo fundamental para leer sobre los detalles adicionales de la entidad objeto de examen. usted todavía puede hacer uso de diversos VB6-ismos.VisualBasic. 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. NET bibliotecas de clases base. 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. si desea hacerlo.0 Asamblea Como lo más seguro dado cuenta a lo largo de este libro. Figura 2-25. NET llamado Microsoft. tendrá que subirse las mangas y cavar en los detalles. supongo que va a sumergirse en esta muy. Por lo tanto. Microsoft.VisualBasic. El conjunto de compatibilidad Microsoft. Al igual que cualquier montaje. no es necesario añadir explícitamente un conjunto de instrucciones Imports para acceder de sus tipos. tipos definidos por el usuario y los objetos intrínsecos están en ninguna parte se encuentra directamente en el." Con este fin. enumeraciones. muchos familiares VB6 funciones. Aunque esto es técnicamente cierto.5 documentación. asegúrese de aprovechar el sistema de ayuda! El papel de la compatibilidad de Visual Basic 6. Al leer el resto de este libro. vb en su del proyecto. puede cubrir todos los detalles de la creación de aplicaciones con Visual Basic 2008 o la plataforma. Cuando usted está aprendiendo un marco nuevo y lenguaje de programación. 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).dll se compone de numerosas espacios de nombres que agrupan ideas afines tipos (ver Figura 2. NET Framework 3.VisualBasic namespaces ' are automatically referenced by a ' Visual Studio 2008 VB project. como el MsgBox () para mostrar un cuadro de mensaje simple: ' The Microsoft. en lugar de "Visual Basic 7.dll VB6 Además. Teniendo en cuenta este punto. Ningún libro.

no se puede garantizar que esta asamblea de compatibilidad se apoyará en el futuro.Sub Main() MsgBox("Hello. el MsgBox () es un miembro de un módulo de VB 2008 Interacción con nombre que se definido en el espacio de nombres Microsoft. Como se verá en el capítulo 3. 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. en el que los miembros definido en un módulo puede ser llamado directamente. NET Herramientas de desarrollo Para concluir este capítulo. El espacio de nombres Microsoft. sin necesidad de prefijo el nombre de la definición módulo.VisualBasic (véase la Figura 2-26). bas VB6. Figura 2-26.. el programa que funcionan de forma idéntica: Module Module1 Sub Main() Interaction. Por el contrario. 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. En realidad. en el que La propia Microsoft tiene previsto eliminar gradualmente el apoyo a VB6 con el tiempo.MsgBox("Everything old is new again!") End Sub End Module Ahora bien. y teniendo en cuenta esto. que se centrará en el aprendizaje.") End Sub End Module Note como parece que está llamando a un método global llamada MsgBox () directamente dentro de Main (). y todos ellos son gratuitos. NET herramientas de desarrollo que se complementan la funcionalidad proporcionada por el IDE de elección. si usted fuera a prefijo del módulo de interacción con el MsgBox () función. la tabla 2-2 enumera una serie de herramientas que he encontrado para ser extremadamente útil. un módulo de Visual Basic 2008 es similar a un archivo *. le recomiendo que evite el uso de este tipo en posible. Teniendo en cuenta estos puntos.VisualBasic contiene el tipo de interacción. este texto no hacer uso de la capa de compatibilidad de VB6. me gustaría señalar una serie de. old friend. la escritura parece estar en la pared sobre la vida de VB6. . NET base bibliotecas y la forma de interactuar con este tipo utilizando la sintaxis de Visual Basic 2008. En primer lugar. Además. así como URL que puede visitar para obtener más información acerca de ellos. Un catálogo parcial de adicionales. Muchas de las herramientas mencionadas aquí son de código abierto. Sin embargo.. Aunque no tengo el espacio para cubrir los detalles de estas utilidades.

the http://sourceforge. and LaTeX). XML. Lutz Roeder’s This advanced .NET Development Tools Tool Meaning in Life URL FxCop This is a must-have for any .NET assemblies using nothing other than the free VB 2008 compiler and Notepad.dll and mentioned a number of open source . Core VB Programming Constructs .nunit.NET assembly) in a variety of popular formats (MSDN’s *. VisualBasic.Table 2-2. The chapter wrapped up by describing the role of Microsoft. Select .com/roeder/ Reflector browser allows you to view the .NET assembly against the official Microsoft .NET development tools that extend the functionality of your IDE of choice. NAnt projects/nant allows you to define and execute detailed build scripts using an XML-based syntax.net/ popular Java automated build tool.NET developer http://blogs.NET best-practice coding guidelines.NET best practices.msdn. HTML.NET dotnet implementation of any . 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.NET type using a variety of languages. You began the journey by learning how to generate . While this chapter only scratched the surface of each tool’s functionality.com/fxcop/ interested in . Summary So as you can see. Javadoc. NAnt NAnt is the .NET decompiler/object http://www. you are able to facilitate the testing of your managed code. you should be in a good position to explore your chosen IDE at your leisure.aisto. starting with the open source SharpDevelop.chm.org Java-centric JUnit unit testing tool. NDoc NDoc is a tool that will generate code http://sourceforge.NET equivalent of the http://www. Using NUnit.net/ documentation files for commented VB projects/ndoc code (or a compiled . You also examined three feature-rich IDEs. NUnit NUnit is the . FxCop will test any . followed by Microsoft’s Visual Basic 2008 Express and Visual Studio 2008.NET equivalent of Ant.

Parte I Este capítulo comienza su investigación formal del lenguaje de programación Visual Basic 2008. El papel del tipo de módulo Visual Basic 2008 admite una programación específica la construcción de un módulo llamado. Por ejemplo. así como diversas datos de las rutinas de conversión de tipo. vb que contiene el siguiente código: Module Module1 Sub Main() End Sub End Module Bajo el capó. 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 *. recibirá automáticamente un archivo *. al crear un proyecto Aplicación de consola con Visual Studio 2008. Dado que los miembros de un módulo son directamente accesibles. que se declara con la palabra clave del módulo. una función pública. DisplayBanner() . bas VB6 (los detalles sobre compartida miembros se pueden encontrar en el capítulo 5). 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. la iteración construcciones. 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.Programación VB 2008 Construcciones. A diferencia de los capítulos restantes de este texto. 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 (). NET Framework. A continuación. el subprograma. la palabra clave del módulo define un tipo de clase. En pocas palabras. y construcciones de decisión para construir declaraciones código válido. se investigará la intrínseca VB 2008 los tipos de datos (y sus tipos equivalente en el espacio de nombres System). En primer lugar y ante todo. 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. no es necesario anteponer el nombre del módulo cuando se accede a su contenido. Nos terminar examinando el conjunto de los operadores. con algunas excepciones notables. Dicho esto. Para ilustrar el trabajo con módulos. 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.

GreetUser() End Sub En el ejemplo actual. GreetUser() End Sub Sub DisplayBanner() ' Get the current color of the console text.GreetUser () desde dentro del método Main ().WriteLine("of the Module type. Sin embargo. si desea hacerlo. Nice to meet ya. Console. Module1.ForegroundColor = currColor Console.") End Sub End Module Si usted quiere hablar MyModule.WriteLine("Hello user. puede adaptar Main () de la siguiente manera: Sub Main() ' Show banner. userName) End Sub End Module Figure 3-1 shows one possible output. vb. observe que el método Main () es capaz de llamar directamente al DisplayBanner () y GreetUser () métodos.WriteLine("******* Welcome to FunWithModules *******") Console.ReadLine() Console.") Console..Write("Please enter your name: ") userName = Console. Module1.WriteLine("*****************************************") ' Reset to previous color of your console text. Sin embargo.. Dim currColor As ConsoleColor = Console. Debido a que estos métodos se definen en el mismo módulo como Main (). no estamos obligados como prefijo el nombre de nuestro módulo (Module1) al nombre del miembro. el Main () . se supone que iban a definir un nuevo módulo (MyModule) en el proyecto (dentro de la misma *.Yellow Console.WriteLine("This simple program illustrates the role") Console. Proyectos con múltiples módulos En nuestro ejemplo.DisplayBanner() ' Get user's name and say howdy. 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). ahora tendría que el prefijo explícitamente el nombre del módulo.".ForegroundColor = ConsoleColor.' Get user's name and say howdy.WriteLine("Hello there {0}.WriteLine() End Sub Sub GreetUser() Dim userName As String Console. Si no se especifica el nombre del módulo.ForegroundColor ' Set text color to yellow. que define un idéntica GreetUser formado () método: Module MyModule Public Sub GreetUser() Console. Console. por ejemplo).

Además. 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 . no se necesarios para el prefijo del nombre del módulo a menos que los métodos son ambiguos. MyMathModule.GreetUser () método..WriteLine("10 . tenga en cuenta que los tipos de módulo no se puede utilizado para construir jerarquías de clases. Console. Console. 10)) ' Subtract some numbers ' (module prefix optional). un módulo simplemente expone miembros compartidos. ' Add some numbers. Los módulos no son Instanciable Otro rasgo del tipo de módulo es que no pueden ser creados directamente con la palabra clave New VB 2008 (cualquier intento de hacerlo resultará en un error del compilador).método llama automáticamente al Module1. MyModule. el siguiente código es ilegal: ' Nope! Error.WriteLine("10 + 10 is {0}.". DisplayBanner() ' Call the GreetUser() method in MyModule.". si su actual proyecto fueron: definir un nuevo módulo denominado MyMathModule: Module MyMathModule Function Add(ByVal x As Integer. Por lo tanto. estar seguro de que el capítulo 4 se cubren los detalles de las funciones del edificio y subrutinas. nNota Si usted ya tiene experiencia en programación orientada a objetos. Por lo tanto. 10)) End Sub nNota Si usted es nuevo en la sintaxis de los lenguajes BASIC.y End Function End Module se puede invocar directamente el complemento () y resta () funciona en cualquier lugar dentro de la aplicación (u opcionalmente prefijo el nombre del módulo): Sub Main() . entienden que cuando un proyecto está definido por varios módulos.Subtract(10. como lo es en el ámbito mismo módulo como Main (): Sub Main() ' Show banner.. can't allocated modules! Dim m as New Module1() Por el contrario.10 is {0}. Add(10. ya que implícitamente están cerrados.GreetUser() End Sub Una vez más. a .

Cambiar el nombre de su módulo inicial De forma predeterminada. Si tuviera que cambiar el nombre del módulo que defina el Main () método a un nombre más adecuado (Programa.. ' Set user's name and call second form of GreetUser().GreetUser() . usted será capaz de compilar la aplicación sin errores. sé que los módulos pueden tener miembros adicionales más allá de las subrutinas y funciones. Con el fin de informVisual Studio 2008 con el nombre nuevo módulo. Figura 3-2. Tenga en cuenta que la GreetUser () método que ahora se imprimirá este valor cuando se invoca: Module MyModule Public UserName As String Sub GreetUser() Console. por ejemplo). cambiando el nombre del archivo utilizando la definición de la Ventana Explorador de soluciones de Visual Studio. se le requiere para restablecer el "objeto de inicio"por medio de la ficha Aplicación del cuadro de diálogo Mi proyecto. Por ejemplo: Sub Main() . UserName) End Sub End Module Al igual que cualquier miembro de módulo. suponga que desea actualizar a MyModule contienen una sola pieza de datos de la cadena pública. como como propiedades o eventos). Si desea definir los datos de campo (así como otros miembros.. el nombre de usuario puede acceder directamente por cualquier parte de su solicitud. Una vez que lo hace.diferencia de "normales" las clases. Restablecer el nombre del módulo nNota como un acceso directo. los módulos no pueden implementar interfaces.WriteLine("Hello. el compilador generará un error como lo siguiente: 'Sub Main' was not found in 'FunWithModules. usted es libre de hacerlo.". Por ejemplo. como se ve en la Figura 3-2.Module1'. también puede cambiar el nombre de su módulo inicial. {0}. Esto automáticamente "reiniciar" el objeto de inicio Miembros de los módulos Para terminar nuestra investigación de los tipos de módulos. UserName = "Fred" MyModule. Visual Studio 2008 los nombres de los de tipo inicial del módulo de una aplicación de consola utilizando el más bien anodino Module1.

debe expresamente hacer uso de la palabra clave compartida. Por ejemplo.Environment. La compilador de vbc. que representa el punto de entrada de la aplicación. we must declare Main() ' with the Shared keyword. members in a class are not ' automatically shared. Procesamiento de la línea de comandos Uso de argumentos System. Elimine el código en el archivo *. vbc. vb inicial y sustituirlo por el siguiente: Class Program ' Unlike Modules. Este método devuelve un array de objetos String. Para ilustrar.exe (véase el capítulo 2). Shared Sub Main() End Sub End Class Si intenta compilar el programa. Uso de la ficha Aplicación del cuadro de diálogo Mi proyecto. sin embargo. el método Main () generalmente se coloca dentro de un tipo de módulo.. especifica las distintas opciones (por ejemplo. usted tiene varias formas posibles de hacerlo. considere el compilador de línea de comandos VB. El primer elemento de . etc) al compilar nuestros archivos de código. Si se define el método Main () dentro de cualquiera de estos tipos. Ahora puede especificar que el programa objeto de inicio del programa (como ya se muestra en la Figura 3-2). usted recibirá otra vez un error del compilador que le informa que el método Main () no puede ser localizado. / target. Thus. Como acabamos de ver.Environment Una de las tareas comunes Main () se llevará a cabo para procesar los argumentos de entrada de línea de comandos. En sentido estricto. El papel del método principal Cada VB 2008 ejecutables de aplicaciones (como un programa de consola. que como ustedes recuerdan define implícitamente Main () como un método compartido. entrada / salida. End Sub nSource Código FunWithModules El proyecto se encuentra en el Capítulo 3 subdirectorio. Su primer enfoque consiste en hacer uso de la GetCommandLineArgs compartido () método definido por el Tipo System... crear una nueva aplicación de consola denominada FunWithMain.exe procesados estos indicadores de entrada con el fin de compilar el ensamblado de salida. Como ustedes recordarán. Main () también se puede definir en el ámbito de aplicación de un tipo de clase o estructura tipo así. Cuando se deseo de construir un método Main () que puede procesar los argumentos de entrada de línea de comandos para su medida aplicaciones. el servicio de Windows o el escritorio de un GUI de la aplicación) debe contener un tipo de definición de un método Main ().

Procesamiento de la línea de comandos argumentos Por supuesto. Figura 3-3.o un prefijo /). la actualización su base de código de la siguiente manera: Shared Sub Main(ByVal args As String()) Console.WriteLine("***** Fun with Main() *****") ' Get command-line args. Para ilustrar. 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. Aquí simplemente se pasa en una serie de opciones que se imprime en el símbolo del sistema.GetCommandLineArgs() Dim s As String For Each s In args Console. actualizar su actual método Main () como siguiente: Class Program Shared Sub Main() Console. mientras que cualquier resto de elementos de la matriz representan los argumentos de línea de comandos propios. Dim args As String() = Environment.WriteLine("Arg: {0}". Si el usuario inicia la aplicación con la bandera.WriteLine("Arg: {0}". Supongamos. sin embargo. se puede alimentar en sus argumentos de la misma manera como lo hizo cuando se trabaja con vbc.WriteLine("***** Fun with Main() *****") ' Get command-line args. s) Next End Sub End Class Suponiendo que usted ha construido su aplicación. puede definir su método Main () para tener una matriz de entrada de cadenas. Dim s As String For Each s In args Console. con un . si usted fuera a ejecutar ahora la aplicación en el símbolo del del sistema.exe (ver Figura 3-3). y usted puede tener una curso de acción apropiado. fueron la creación de un nuevo juego de video y programar la aplicación para procesar una opción llamada-godmode. Procesamiento de la línea de comandos con argumentos Main () Si prefiere no hacer uso del tipo System.la matriz es simplemente el nombre del programa ejecutable. s) Next End Sub .Environment para procesar los argumentos de línea de comandos. ya sabes que el usuario es en realidad un tramposo. Para ilustrar.

en aras de la realización.Environment El tipo de Medio Ambiente expone una serie de métodos muy útiles más allá de GetCommandLineArgs ().Al adoptar este enfoque. el objetivo sigue siendo el mismo: interactuar con los tipos que llevan a cabo la funcionalidad de su aplicación. . Si se va a ejecutar la aplicación una vez de nuevo. en devolver el valor 0 indica normalmente que el programa ha terminado sin errores. el primer elemento de la matriz de entrada es de hecho la primera línea de comandos argumento (en lugar del nombre del ejecutable). permítanme señalar que Visual Studio 2008 le permite especificar de entrada de línea de comandos argumentos. En lugar de tener que ejecutar la aplicación en una línea de comandos para alimentar argumentos en forma manual. aquí está un ejemplo: Shared Function Main(ByVal args As String()) As Integer Console. Especificar argumentos de línea de comandos con Visual Studio 2008 Por último. Main () como una función (no una subrutina) También es posible definir Main () como una función que devuelve un entero. Main () las salidas y su aplicación termina. Return 0 End Function Independientemente de cómo se defina el método Main (). Una vez que la declaración final en el Método main () se ha ejecutado.WriteLine("***** Fun with Main() *****") Dim s As String For Each s In args Console. usted encontrará cada opción de línea de comandos se imprime en la consola. que puede ser muy útil cuando las pruebas y la depuración de la aplicación. s) Next ' Return a value to the OS. Figura 3-4. esto ya no es el caso. Sé que al compilar y ejecutar un lanzamiento construcción de su solicitud (que se puede establecer mediante la ficha de compilación del cuadro de diálogo Mi proyecto caja). en lugar de una subrutina (que nunca tiene un valor de retorno). Simulación de argumentos de la línea de comandos Al compilar y ejecutar la aplicación en modo de depuración. que se muestra en la Figura 3. Rara vez (o nunca) necesitan para construir su método Main () de esta manera. los argumentos especificados son se pasa al método Main () de forma automática. Este enfoque a la creación de un método Main () tiene sus raíces en Lenguajes basados en C. puede hacerla especificar los argumentos utilizando la ficha Depurar del cuadro de diálogo Mi proyecto.WriteLine("Arg: {0}". sin embargo. Un interesante Aparte: Algunos miembros adicionales de la clase System.4 (véase la La línea de comandos área de texto argumentos).

sin embargo. d) Next ' Which version of the . en lugar de tratar con las complejidades de la GUIs edificio. NET Framework 3. Select Properties of System.GetLogicalDrives() Dim d As String For Each d In drives Console.".WriteLine("You have a drive named {0}. actualizar el método Main () con la siguiente lógica: Shared Function Main(ByVal args As String()) As Integer . Como su nombre lo indica.Console 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 System.OSVersion) ' List the drives on this machine. esta clase le permite obtener una serie de detalles sobre el sistema operativo en la actualidad alojamiento de su.5 SDK para más detalles Table 3-1.NET: {0}". Tabla 3-2 se enumeran algunas (pero definitivamente no todos) de los miembros del de interés.Version) Return 0 End Function El tipo para el Medio Ambiente define a los miembros que no sean los que se ven en el ejemplo anterior.Environment. Dim drives As String() = Environment.. 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.Console. asegúrese de revisar la .WriteLine("Current OS: {0}". NET utilizando diversos miembros compartidos.NET platform is running this app? Console.En concreto. _ Environment.Environment Property Meaning in Life CurrentDirectory Gets the full path to the current application MachineName Gets the name of the current machine NewLine Gets the newline symbol for the current environment ProcessorCount Returns the number of processors on the current machine SystemDirectory Returns the full path to the system directory UserName Returns the name of the user who started this application El System. la clase Console encapsula la entrada. ' OS running this app? Console.. salida y error de secuencia de manipulaciones para aplicaciones basadas en la consola. NET. 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. Para ilustrar la utilidad de System. Environment. Tabla 3-1 documentos algunas propiedades adicionales de interés.WriteLine("Executing version of . .

Write("Enter your age: ") s = Console. El método write () texto bombas de la secuencia de salida sin retorno de carro.ReadLine() Console. la .Table 3-2. Select Members of System.3. Para ilustrar básicas de E / S usando la clase Console. ReadLine () le permite recibir información de la secuencia de entrada hasta el retorno de carro. cuando se la definición de un literal de cadena que contiene los segmentos de datos cuyo valor no se conoce hasta tiempo de ejecución. lo que puede ser utilizado por cualquier lenguaje de programación. La plataforma. mientras que Lee () se utiliza para la captura de un solo carácter del flujo de entrada. s) End Sub El formato de salida de la consola Durante estos primeros capítulos. WriteLine () bombas una cadena de texto (incluyendo un coche ida y vuelta) a la secuencia de salida. cree una nueva aplicación de consola denominada BasicConsoleIO y actualizar el método Main () con la lógica que pide al usuario para algunos bits de información y se hace eco de cada elemento en la secuencia de salida estándar. son capaces de especificar un marcador de posición en el literal utilizando esta sintaxis rizado soporte. {0}". BufferHeight These properties control the height/width of the console’s buffer area. el tipo de consola define un conjunto de métodos para capturar la entrada y la salida. En pocas palabras. WindowHeight These properties control the dimensions of the console in relation to the WindowWidth established buffer. Sub Main() Console. {1}. y como incrustado dentro de una cadena literal. BackgroundColor These properties set the background/foreground colors for the current ForegroundColor output. s) Console. todos los cuales son compartidos y por lo tanto llama anteponiendo el nombre de la clase (consola) para el nombre del método. Para ilustrar.WriteLine("Hello. BufferWidth Title This property sets the title of the current console.Write("Enter your name: ") Dim s As String = Console. que sin duda han notado numerosos casos de los símbolos {0}.ReadLine() Console. NET. Como se ha visto. WindowTop WindowLeft Clear() This method clears the established buffer and console display area.WriteLine("***** Fun with Console IO *****") ' Echo some information to the console.WriteLine () se sustituyen por cada marcador de posición. NET introduce un nuevo estilo de formato de cadenas. En tiempo de ejecución. They may be assigned any member of the ConsoleColor enumeration.Console Member Meaning in Life Beep() This method forces the console to emit a beep of a specified frequency and duration. Básico de entrada y salida con la clase de consola Además de los miembros en la Tabla 2. Console. el valor (s) pasó a Console.WriteLine("You are {0} years old".

. 30. theInt) Console. Console. 10. _ theDouble. consideremos el siguiente fragmento de código: ' Prints: 20.99 Dim theBool As Boolean = True Console.WriteLine("Value of theInt: {0}". un doble. Ser muy consciente de que el primer número ordinal de un curlybracket marcador de posición siempre comienza con 0. Número 9". 20. {0}. the flag will prefix the local cultural symbol (a dollar sign [$] for U. 30) NET cadena de formato Banderas Si desea más detalles de formato. escribiría: ' John says. . El resto de parámetros a WriteLine () son simplemente el valores que se inserta en los marcadores de posición respectiva (en este caso. By default. y así sucesivamente. cada marcador de posición opcionalmente puede contener varios formatos caracteres. Number {0}. y no es necesario seguir una secuencia en aumento. que se recibir una excepción FormatException en tiempo de ejecución.. 9) También sabemos que es posible la posición de cada marcador de posición en cualquier lugar dentro de una cadena literal. Por ejemplo.WriteLine("{1}. Número 9.. Table 3-3.NET String Format Characters String Format Character Meaning in Life C or c Used to format currency.S. English). Tabla 3-3 muestra las opciones de formato básico. Dim theInt As Integer = 90 Dim theDouble As Double = 9.". {2}". Console..actualización su actual método Main () de la siguiente manera: Sub Main() . Por ejemplo.WriteLine("theDouble is {0} and theBool is {1}. ' Specify string placeholders and values to use at ' runtime.. y un Boolean). si son un fan de los Beatles y queremos construir la cadena "9. 10. {1}. Cada carácter de formato se puede escribir en mayúsculas o minúsculas con poca o ninguna consecuencia. un número entero. También es permisible para un marcador de posición dada a repetir dentro de una cadena determinada. theBool) End Sub El primer parámetro a WriteLine () representa una cadena literal que contiene marcadores de posición opcional designada por {0}. Number {0}".WriteLine("{0}. {2}. 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.

Uso de cadenas de formato String.76543) Console. F or f Used for fixed-point formatting. En tiempo de ejecución.987) Console. X or x Used for hexadecimal formatting. If you use an uppercase “X”. 99999. NET de formato de cadena no se limita a programas de la consola! Estos indicadores puede utilizar el mismo al llamar a la String. your hex format will also contain uppercase characters. Sub Main() . This flag may also specify the minimum number of digits used to pad the value. ' Use the shared String. actualizar el método Main () con la siguiente lógica: Now make use of some format tags.WriteLine("X format: {0:X}". This character can be used to format a number to fixed or exponential format. 99999) Console.WriteLine("N format: {0:N}".. String Format Character Meaning in Life N or n Used for basic numerical formatting (with commas).9999) Console.. E or e Used for exponential notation.Format () Tenga en cuenta que el uso de los personajes. {0: C}. G or g Stands for general. 99989.. etc). 99999) Console.NET.D or d Used to format decimal numbers. 99989. 99999) Console. servicios web. Ahora. {1: d}.WriteLine("D9 format: {0:D9}". cada uno de ellos tiene un segmento no se conoce hasta tiempo de ejecución. {2: X}.WriteLine("x format: {0:x}". utilizando los dos puntos testigo (por ejemplo. el carácter de formato se utiliza internamente por el tipo de consola para imprimir la cadena completa en el formato deseado.. 99999.Format() method to build a new string. Estos caracteres de formato son el sufijo marcador de posición para un valor determinado. 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.WriteLine(formatStr) End Sub Sistema de Datos Tipos y notación abreviada VB . Dim formatStr As String formatStr = _ String. ASP.Format("Don't you wish you had {0:C} in your account?". XML.WriteLine("E format: {0:E}". Console.WriteLine("C format: {0:C}".WriteLine("F3 format: {0:F3}".987) Console. Para ilustrar. 99999) End Sub Aquí estamos definiendo numerosos literales de cadena. la actualización principal () con el siguiente código final: ' Now make use of some format tags. y así sucesivamente).Format compartido () método. Sub Main() .

5 ! 1045 to ±3. si se expone estos tipos de datos de un ensamblado.854.446.483. Por lo tanto.767 Signed 16-bit number UShort No System.Byte 0 to 255 Unsigned 8-bit number Short Yes System.073.036.Double ±5. lenguaje de programación NET será capaz de procesar estos datos.223. SByte y los tipos de datos no son compatible con CLS (véanse los capítulos 1 y 16 para obtener detalles sobre Compatibilidad con CLS).9 ! 10e28 A 96-bit signed number .615 Unsigned 64-bit number Char Yes System.775.372.648 to Signed 32-bit number 2.UInt16 0 to 65.768 to 32.551. variables de miembros.295 Unsigned 32-bit number Long Yes System.709.372.Int16 –32.647 UInteger No System. Table 3-4.Char U+0000 to U+ffff A single 16-bit Unicode character Single Yes System. los equivalentes de datos el tipo de sistema.854.744.036. Aunque muchos de los VB tipos de datos se denominan de forma idéntica a los tipos de datos encontrados en VB6.967.Boolean True or False Represents truth or falsity SByte No System. El cambio más significativo desde VB6 es que las palabras clave tipo de datos de Visual Basic 2008 son en realidad notaciones cortas para los tipos en toda regla en el espacio de nombres System.4 ! 1038 32-bit floating-point number Double Yes System.UInt64 0 to 18. no se puede garantizar que cada . y el rango de cada tipo.Int32 –2.807 VB Keyword CLS Compliant? System Type Range Meaning in Life ULong No System.0 ! 10324 to ±1.775. los valores devueltos y los parámetros de entrada.Como cualquier otro lenguaje de programación.Decimal ±1.808 to Signed 64-bit number 9.UInt32 0 to 4. Tabla 3-4 documentos los tipos de datos de VB 2008 (con el tamaño de la asignación de almacenamiento).294. nNota El UInteger ULong.7 ! 10308 64-bit floating-point number Decimal Yes System.223.147. que se utilizan para representar variables locales.535 Unsigned 16-bit number Integer Yes System.Single ±1.Int64 –9.0 ! 10e28 to ±7.147. tenga en cuenta que no es un asignación directa (especialmente en términos de un máximo de un tipo de datos y el rango mínimo). Visual Basic define un conjunto de tipos de datos intrínsecos.483.SByte –128 to 127 Signed 8-bit number Byte Yes System. The Intrinsic Data Types of VB 2008 VB Keyword CLS Compliant? System Type Range Meaning in Life Boolean Yes System.

String y Object son "tipos de referencia". en VB6. varTwo As Integer Este comportamiento es más que un poco molesto. 9999 time/date value Object Yes System. 0001 to Represents a December 31. en varias líneas de código: Dim varOne As Integer Dim varTwo As Integer . sin embargo. Por otra parte.DateTime January 1. platformis la posibilidad de declarar una sucesión de variables en una sola línea de código. Declaración de variables e inicialización Cuando se declara un tipo de datos como una variable local (por ejemplo. etc). si no establece explícitamente los tipos de datos de cada variable. 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.Object Any type can be stored in an The base class of all object variable types in the . Integer. Por ejemplo. 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.String Limited by system memory Represents a set of Unicode characters Date Yes System. es decir. Usted examinará todos los detalles de valor y referencia tipos en el capítulo 12. las variables no cualificados se establece en el VB6 Variante tipo de datos: ' In this line of VB6 code. por el momento. pero la semántica fuera un poco intuitivas y una fuente de errores sutiles. así como el tipo de mapa a una Fecha estructura correspondiente en el espacio de nombres System. En pocas palabras. una variable dentro de un ámbito miembro). que hacerlo a través de la Dim y As palabras clave. PART I Cada uno de los tipos numéricos (Short.NET universe 78 CHAPTER 3 s VB 2008 PROGRAMMING CONSTRUCTS. las estructuras son "tipos de valor" asignado en la pila. varTwo As Integer o peor aún. el variable se le asigna en el montón administrado.String Yes System. VB6 también apoyó esta capacidad. 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: Dim varOne As Integer. varOne ' is implicitly defined as a Variant! Dim varOne.

Si bien estos métodos siguen siendo válidos utilizando Visual Basic 2008, al declarar múltiples variables en una sola línea, todos ellos se definen en función del tipo de datos especificado. Así, en los siguientes VB código 2008, que ha creado dos variables de tipo Integer:
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

VB 2008 le permite racionalizar la asignación de variables usando la siguiente notación:
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

Valores por defecto de los tipos de datos Todos VB 2008 los tipos de datos tienen un valor predeterminado que automáticamente se le asignará a la variable. La valores por defecto son muy predecibles, y pueden resumirse de la siguiente manera: • Las variables Boolean se establece en False. • Los datos numéricos se establece en 0 (o 0.0 en el caso de los tipos de datos de punto flotante). • Las variables de Char se establece en un carácter vacío único. • Fecha en que se fijan los tipos de 1/1/0001 12:00:00 AM. • referencias a objetos sin inicializar (incluidos los tipos de cadena) se establece en Nothing. Teniendo en cuenta estas reglas, reflexionar sobre el siguiente código, que ilustra los valores por defecto asignados a miembros en un módulo (los valores predeterminados mismo se aplicaría a los miembros de una clase también):
' Fields of a class or module receive automatic default assignments. Module Program Public myInt As Integer ' Set to 0. Public myString As String ' Set to Nothing. Public myBool As Boolean ' Set to False. Public myObj As Object ' Set to Nothing. End Module}

En Visual Basic 2008, las mismas reglas de los valores por defecto son válidas para las variables locales definidas dentro de un ámbito determinado. Teniendo en cuenta esto, el siguiente método devolverá el valor 0, ya que cada local Entero ha sido asignado automáticamente el valor 0:
Function Add() As Integer Dim a, b As Integer Return a + b ' Returns zero. End Function

El tipo de datos jerarquía de clases Es muy interesante notar que incluso los primitivos. NET tipos de datos están organizados en una "jerarquía de clases." Si eres nuevo en el mundo de la herencia, descubrirá todos los detalles en el capítulo 6. Hasta el entonces, simplemente entender que los tipos en la parte superior de una jerarquía de clases proporcionan algunos comportamientos predeterminados que se otorgan a los tipos derivados. La relación entre estos tipos de sistemas de base puede ser representado como se muestra en la Figura 3-7. Tenga en cuenta que cada uno de estos tipos en última instancia se deriva de System.Object, 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 System.ValueType. 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 System.ValueType en su herencia cadena (como System.Type, System.String, System.Array, System.Exception, 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 System.Object y System.ValueType 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 System.Object, 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 System.Object. Console.WriteLine(12.GetHashCode()) ' Prints the type's hash code value. Console.WriteLine(12.Equals(23)) ' Prints False Console.WriteLine(12.ToString()) ' Returns the string value "12" Console.WriteLine(12.GetType()) ' 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:
' When you create a basic data type with New, ' it is automatically set to its default value. Dim b1 As New Boolean() ' b1 automatically set to False.

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:
' These statements are also functionally identical. Dim b2 As System.Boolean = New System.Boolean() Dim b3 As System.Boolean

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() Console.WriteLine("***** Fun with Data Types *****") Console.WriteLine("Max of Integer: {0}", Integer.MaxValue) Console.WriteLine("Min of Integer: {0}", Integer.MinValue) Console.WriteLine("Max of Double: {0}", Double.MaxValue) Console.WriteLine("Min of Double: {0}", Double.MinValue) End Sub

Además de los MinValue / propiedades MaxValue, un tipo determinado sistema numérico puede definir miembros adicionales de utilidad. Por ejemplo, el tipo System.Double 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):
Console.WriteLine("Double.Epsilon: {0}", Double.Epsilon)

Console.WriteLine("Double.PositiveInfinity: {0}", _ Double.PositiveInfinity) Console.WriteLine("Double.NegativeInfinity: {0}", _ Double.NegativeInfinity)

Los miembros de System.Boolean A continuación, considere el tipo de datos System.Boolean. La cesión sólo será válida una VB 2008 booleano puede tomar es del conjunto {true | false}. Teniendo en cuenta este punto, debe quedar claro que no System.Boolean apoyar una MinValue / conjunto de propiedades MaxValue, sino más bien TrueString / FalseString (que produce la cadena "True " o "Falso", respectivamente):
Console.WriteLine("Boolean.FalseString: {0}", Boolean.FalseString) Console.WriteLine("Boolean.TrueString: {0}", Boolean.TrueString)

Los miembros de System.Char VB 2008 datos de texto se representa por el valor intrínseco de cadena y las palabras clave Char, que son simples notaciones cortas por System.String y System.Char, los cuales son Unicode en el marco del campana. Como usted seguramente ya sabe, una cadena es un conjunto contiguo de caracteres (por ejemplo, "Hola"). El tipo de datos Char puede representar una sola ranura en un tipo de cadena (por ejemplo, "H"). De forma predeterminada, al definir los datos textuales entre comillas dobles, el compilador de VB 2008 asume está definiendo un tipo de cadena en toda regla. Sin embargo, para generar una cadena de caracteres de un solo literal que debe escribirse como un lugar de Char, el carácter entre comillas dobles y virar en una sola "c"después de la cotización de cierre. Si lo hace, asegura que el texto entre comillas dobles literal es representado como un hecho System.Char, en lugar de una System.String:
Dim myChar As Char = "a"c

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 System.Char 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 System.Char, 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:
' Fun with System.Char. Dim myChar As Char = "a"c

WriteLine("Char.IsPunctuation('?'): {0}". Char.String System. 6)) Console.Parse("99.884") Console.IsLetter('a'): {0}". Member of String Class Meaning in Life . 5)) Console. Dim b As Boolean = Boolean.Console. b) Dim d As Double = Double.String proporciona una serie de métodos que se puede esperar de tal clase de utilidad. Al igual que todos los tipos intrínsecos.WriteLine("Value of myDbl: {0}". _ Char.String.WriteLine("Value of myInt: {0}". NET de la clase base.WriteLine("Char. convertir hacia y desde mayúsculas y minúsculas. d) Dim i As Integer = Integer.String Como se ha mencionado. Esta técnica puede ser muy útil cuando se desea convertir un bits de los datos introducidos por el usuario (por ejemplo.WriteLine("Char. i) Dim c As Char = Char. una selección de un cuadro de lista basado en GUI desplegable) en un valor numérico valor. Char. el análisis).Parse("True") Console.WriteLine("Char. que en este caso es System.IsDigit('a'): {0}". buscar subcadenas dentro de la cadena actual. los miembros de System.Parse("8") Console. y así sucesivamente. usted puede declarar una variable de cadena utilizando cualquiera de estos notaciones: ' These two string declarations are functionally equivalent. _ Char. el VB 2008 String palabras clave en realidad es una notación abreviada para un tipo de verdad en la biblioteca.IsPunctuation("?"c)) Como se ilustra en el fragmento de código anterior. _ Char. De análisis de valores de datos de cadena Los tipos de datos de.IsWhiteSpace('Hello There'.WriteLine("Value of myBool: {0}". 5): {0}". incluidos los métodos que devuelven el número de caracteres de la cadena.WriteLine("Char. c) Comprender el tipo System.Parse("w") Console.IsWhiteSpace('Hello There'. NET proporciona la capacidad para generar una variable de su tipo subyacente dado un texto equivalente (por ejemplo. Por lo tanto. Dim firstName As String Dim lastName As System.IsLetter(myChar)) Console.IsDigit(myChar)) Console. String es un tipo de datos nativa en VB 2008. Tenga en cuenta la lógica de análisis siguientes: ' Fun with parsing. 6): {0}".IsWhiteSpace("Hello There". Tabla 3-5 se enumeran algunas (pero no todos) de los miembros de interés.Char 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.WriteLine("Value of myChar: {0}".IsWhiteSpace("Hello There".

Sólo tienes que crear una variable de cadena y hacer uso de la funcionalidad proporcionada por el operador punto.e.WriteLine("***** Fun with Strings *****") Dim firstName As String = "June" Console. Insert() This method inserts a string within a given string. Básicas de manipulación de cadenas Trabajar con los miembros de System. . firstName) Console.. Contains() This method determines whether a string contains a specific substring. numerical data.String es como era de esperar. firstName. Split() This method returns a String array containing the substrings in this instance that are delimited by elements of a specified Char or String array. Length This property returns the length of a string.ToUpper()) Console.WriteLine("Value of firstName: {0}".WriteLine("Hex vaule of myValue is: {0:X}". Pag 117 sigue.ToLower()) Dim myValue As Integer = 3456787 Console.".String se comparten los miembros y. Trim() This method removes all occurrences of a set of specified characters from the beginning and end of the current string. PadLeft() These methods are used to pad a string with some character. Compare() This method compares two strings. firstName. ToUpper() These methods create a copy of the current string in uppercase or ToLower() lowercase format.WriteLine("firstName in lowercase: {0}".Length) Console. Equals() This method tests whether two string objects contain identical character data. myValue) Console. other strings) and the {0} notation examined earlier in this chapter.WriteLine("firstName in uppercase: {0}".Chars This property returns a specific character within the current string. Format() This method formats a string using other primitives (i. PadRight() Remove() These methods are used to receive a copy of a string.WriteLine("Currency value of myValue is: {0:C}". No ser consciente de que algunos de los miembros de System. por tanto llamó a la clase (en lugar del objeto) nivel. 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.WriteLine("firstName has {0} characters. firstName. Suponga que ha creado una nueva aplicación de consola denominada FunWithStrings y actualización Main () de la siguiente manera: Module Program Sub Main() Console. with modifications Replace() (characters removed or replaced). y por lo tanto llamar directamente desde un objeto String.

Sign up to vote on this title
UsefulNot useful