Visual Basic Language Specification

of 541 /541
Especificación del lenguaje MicrosoftVisual Basic Versión 11.0 Paul Vick, Lucian Wischik Microsoft Corporation Copyright © Microsoft Corporation 2022. Reservados todos los derechos. Envíe correcciones, comentarios y cualquier otra sugerencia a http://connect.microsoft.com

Embed Size (px)

Transcript of Visual Basic Language Specification

Especificacin del lenguaje MicrosoftVisual Basic

Versin 11.0

Paul Vick, Lucian Wischik Microsoft Corporation

Copyright Microsoft Corporation 2013. Reservados todos los derechos. Enve correcciones, comentarios y cualquier otra sugerencia a http://connect.microsoft.com

La informacin incluida en este documento representa la visin actual de Microsoft Corporation con respecto a los temas que se tratan a fecha de publicacin. Microsoft debe responder a las condiciones en constante cambio del mercado, por lo que esta informacin no se debe interpretar como un compromiso por parte de Microsoft; Microsoft tampoco puede garantizar la precisin de la informacin tras la fecha de publicacin. Esta Especificacin del lenguaje se debe usar solamente con fines informativos. MICROSOFT NO OFRECE NINGUNA GARANTA, YA SEA EXPLCITA, IMPLCITA NI REGLAMENTARIA, CON RESPECTO A LA INFORMACIN DE ESTE DOCUMENTO. Es responsabilidad del usuario el cumplimiento de toda la legislacin aplicable en materia de copyright. Sin limitacin de los derechos protegidos por copyright, ninguna parte del presente documento podr ser reproducida, almacenada o introducida en un sistema de recuperacin, o bien transmitida en ninguna forma o medio (electrnico, mecnico, mediante fotocopia o grabacin, etc.), ni con ningn propsito, sin la autorizacin expresa y por escrito de Microsoft Corporation. Microsoft puede ser titular de patentes, solicitudes de patentes, marcas, derechos de autor u otros derechos de propiedad intelectual sobre los contenidos de este documento. Este documento no otorga ninguna licencia sobre estas patentes, marcas, derechos de autor u otros derechos de propiedad intelectual, a menos que se indique expresamente en un contrato escrito de licencia de Microsoft. Salvo que se indique lo contrario, los ejemplos de sociedades, organizaciones, productos, nombres de dominio, direcciones de correo electrnico, logotipos, personas, lugares y acontecimientos aqu citados son ficticios; con ellos no se pretende, ni se debe deducir, relacin alguna con sociedades, organizaciones, productos, nombres de dominio, direcciones de correo electrnico, logotipos, personas, lugares o acontecimientos reales. 2012 Microsoft Corporation. Reservados todos los derechos. Microsoft, MS-DOS, Visual Basic, Windows 2000, Windows 95, Windows 98, Windows ME, Windows NT, Windows XP, Windows Vista y Windows son marcas comerciales o marcas registradas de Microsoft Corporation en Estados Unidos y en otros pases. Los nombres de las compaas y de los productos reales mencionados en este documento pueden ser marcas comerciales de sus respectivos propietarios.

Tabla de contenido1. Introduction............................................................................................................................................ 1 1.1 Notacin gramatical ...................................................................................................................................... 1 1.2 Compatibilidad .............................................................................................................................................. 2 1.2.1 Tipos de interrupciones de compatibilidad ........................................................................................... 2 1.2.2 Criterios de impacto .............................................................................................................................. 3 1.2.3 Desuso del lenguaje............................................................................................................................... 4 2. Gramtica lxica ..................................................................................................................................... 5 2.1 Caracteres y lneas ........................................................................................................................................ 5 2.1.1 Terminadores de lnea ........................................................................................................................... 5 2.1.2 Continuacin de lnea ............................................................................................................................ 5 2.1.3 Espacio en blanco .................................................................................................................................. 7 2.1.4 Comentarios .......................................................................................................................................... 7 2.2 Identificadores .............................................................................................................................................. 7 2.2.1 Caracteres de tipo ................................................................................................................................. 9 2.3 Palabras clave ............................................................................................................................................. 10 2.4 Literales ....................................................................................................................................................... 11 2.4.1 Literales booleanos.............................................................................................................................. 11 2.4.2 Literales enteros .................................................................................................................................. 11 2.4.3 Literales de punto flotante .................................................................................................................. 12 2.4.4 Literales de cadena .............................................................................................................................. 13 2.4.5 Literales de carcter ............................................................................................................................ 14 2.4.6 Literales de fecha................................................................................................................................. 14 2.4.7 Nothing ................................................................................................................................................ 15 2.5 Separadores ................................................................................................................................................ 15 2.6 Caracteres de operador .............................................................................................................................. 15 3. Directivas de preprocesamiento ............................................................................................................ 17 3.1 Compilacin condicional ............................................................................................................................. 17 3.1.1 Directivas de constantes condicionales............................................................................................... 18 3.1.2 Directivas de compilacin condicional ................................................................................................ 19 3.2 Directivas de cdigo fuente externo ........................................................................................................... 20 3.3 Directivas de regin .................................................................................................................................... 20 3.4 Directivas de suma de comprobacin externa ........................................................................................... 21 4. Conceptos generales ............................................................................................................................. 23 4.1 Declaraciones .............................................................................................................................................. 23 4.1.1 Sobrecargas y firmas ........................................................................................................................... 24 4.2 mbito ........................................................................................................................................................ 25 4.3 Herencia ...................................................................................................................................................... 26 4.3.1 Clases MustInherit y NotInheritable ................................................................................................... 27Copyright Microsoft Corporation 2013. Reservados todos los derechos.

i

Tabla de contenido 4.3.2 Interfaces y herencia mltiple ............................................................................................................. 27 4.3.3 Sombreado .......................................................................................................................................... 29 4.4 Implementacin .......................................................................................................................................... 34 4.4.1 Mtodo de implementacin ................................................................................................................ 37 4.5 Polimorfismo ............................................................................................................................................... 39 4.5.1 Mtodos de invalidacin ..................................................................................................................... 40 4.6 Accesibilidad ............................................................................................................................................... 44 4.6.1 Tipos constituyentes............................................................................................................................ 46 4.7 Nombres de tipos y de espacios de nombres ............................................................................................. 46 4.7.1 Resolucin de nombres calificados para los espacios de nombres y tipos ......................................... 48 4.7.2 Resolucin de nombres no calificados para los espacios de nombres y tipos .................................... 48 4.8 Variables ..................................................................................................................................................... 50 4.9 Tipos y mtodos genricos ......................................................................................................................... 50 4.9.1 Parmetros de tipo .............................................................................................................................. 51 4.9.2 Restricciones de tipo ........................................................................................................................... 53 4.9.3 Varianza de los parmetros de tipo .................................................................................................... 57 5. Atributos .............................................................................................................................................. 61 5.1 Clases de atributos ...................................................................................................................................... 62 5.2 Bloques de atributos ................................................................................................................................... 64 5.2.1 Nombres de atributo ........................................................................................................................... 65 5.2.2 Argumentos de atributos .................................................................................................................... 65 6. Archivos de cdigo fuente y espacios de nombres .................................................................................. 69 6.1 Inicio y terminacin de un programa.......................................................................................................... 69 6.2 Opciones de compilacin ............................................................................................................................ 70 6.2.1 Instruccin Option Explicit................................................................................................................... 70 6.2.2 Instruccin Option Strict...................................................................................................................... 71 6.2.3 Instruccin Option Compare ............................................................................................................... 71 6.2.4 Comprobaciones de desbordamiento con enteros ............................................................................. 72 6.2.5 Instruccin Option Infer ...................................................................................................................... 72 6.3 Instruccin Imports ..................................................................................................................................... 72 6.3.1 Alias de importacin ............................................................................................................................ 73 6.3.2 Importaciones de espacios de nombres .............................................................................................. 76 6.3.3 Importaciones de espacios de nombres XML...................................................................................... 77 6.4 Espacios de nombres .................................................................................................................................. 78 6.4.1 Declaraciones de espacio de nombres ................................................................................................ 79 6.4.2 Miembros de espacio de nombres ...................................................................................................... 80 7. Tipos..................................................................................................................................................... 81 7.1 Tipos de valor y tipos de referencia ............................................................................................................ 81 7.1.1 Tipos de valor que aceptan valores NULL ........................................................................................... 82 7.2 Implementacin de interfaces .................................................................................................................... 83 7.3 Tipos primitivos........................................................................................................................................... 84 7.4 Enumeraciones ........................................................................................................................................... 86 7.4.1 Miembros de enumeraciones ............................................................................................................. 86 7.4.2 Valores de enumeracin...................................................................................................................... 86 7.5 Clases .......................................................................................................................................................... 88 iiCopyright Microsoft Corporation 2013. Reservados todos los derechos.

Tabla de contenido 7.5.1 Especificacin de clase base ................................................................................................................ 89 7.5.2 Miembros de clase .............................................................................................................................. 90 7.6 Estructuras .................................................................................................................................................. 90 7.6.1 Miembros de estructura ...................................................................................................................... 91 7.7 Mdulos estndar ....................................................................................................................................... 92 7.7.1 Miembros de mdulo estndar ........................................................................................................... 93 7.8 Interfaces .................................................................................................................................................... 93 7.8.1 Herencia de interfaces......................................................................................................................... 94 7.8.2 Miembros de interfaz .......................................................................................................................... 96 7.9 Matrices ...................................................................................................................................................... 96 7.10 Delegados ................................................................................................................................................. 99 7.11 Tipos parciales ........................................................................................................................................ 100 7.12 Tipos construidos .................................................................................................................................... 102 7.12.1 Tipos cerrados y abiertos ................................................................................................................ 102 7.13 Tipos especiales ...................................................................................................................................... 103 8. Conversiones .......................................................................................................................................105 8.1 Conversiones implcitas y explcitas.......................................................................................................... 105 8.2 Conversiones booleanas ........................................................................................................................... 106 8.3 Conversiones numricas ........................................................................................................................... 106 8.4 Conversiones de referencias ..................................................................................................................... 107 8.4.1 Conversiones de varianza de referencia ........................................................................................... 107 8.4.2 Conversiones de delegados annimos .............................................................................................. 109 8.5 Conversiones de matrices ......................................................................................................................... 109 8.6 Conversiones de tipo de valor .................................................................................................................. 111 8.6.1 Conversiones de tipos de valor que admiten null ............................................................................. 114 8.7 Conversiones de cadenas.......................................................................................................................... 115 8.8 Conversiones widening ............................................................................................................................. 115 8.9 Conversiones de restriccin ...................................................................................................................... 118 8.10 Conversiones de parmetros de tipo...................................................................................................... 120 8.11 Conversiones definidas por el usuario .................................................................................................... 120 8.11.1 Conversin widening ms especfica ............................................................................................... 122 8.11.2 Conversin narrowing ms especfica ............................................................................................. 123 8.12 Conversiones nativas .............................................................................................................................. 124 8.13 Tipo dominante....................................................................................................................................... 124 9. Miembros de tipo ................................................................................................................................125 9.1 Implementacin de mtodos de interfaz ................................................................................................. 125 9.2 Mtodos .................................................................................................................................................... 127 9.2.1 Declaraciones de mtodos normales, Async e Iterator..................................................................... 129 9.2.2 Declaraciones de mtodos externas ................................................................................................. 131 9.2.3 Mtodos invalidables ........................................................................................................................ 133 9.2.4 Mtodos compartidos ....................................................................................................................... 134 9.2.5 Parmetros de mtodos .................................................................................................................... 135 9.2.5.1 Parmetros de valor ................................................................................................................... 135 9.2.5.2 Parmetros de referencia .......................................................................................................... 136 9.2.5.3 Parmetros opcionales............................................................................................................... 138 9.2.5.4 Parmetros ParamArray ............................................................................................................. 138Copyright Microsoft Corporation 2013. Reservados todos los derechos.

iii

Tabla de contenido 9.2.6 Control de eventos ............................................................................................................................ 139 9.2.7 Mtodos de extensin ....................................................................................................................... 141 9.2.8 Mtodos parciales ............................................................................................................................. 145 9.3 Constructores............................................................................................................................................ 146 9.3.1 Constructores de instancias .............................................................................................................. 146 9.3.2 Constructores compartidos ............................................................................................................... 148 9.4 Eventos...................................................................................................................................................... 150 9.4.1 Eventos personalizados ..................................................................................................................... 153 9.5 Constantes ................................................................................................................................................ 155 9.6 Variables compartidas y de instancias ...................................................................................................... 156 9.6.1 Variables de solo lectura ................................................................................................................... 158 9.6.2 Variables WithEvents......................................................................................................................... 159 9.6.3 Inicializadores de variable ................................................................................................................. 161 9.6.3.1 Inicializadores regulares ............................................................................................................. 163 9.6.3.2 Inicializadores de objetos........................................................................................................... 163 9.6.3.3 Inicializadores de tamao de matriz .......................................................................................... 164 9.6.4 Clases System.MarshalByRefObject .................................................................................................. 165 9.7 Propiedades .............................................................................................................................................. 165 9.7.1 Declaraciones del descriptor de acceso Get...................................................................................... 171 9.7.2 Declaraciones del descriptor de acceso Set ...................................................................................... 172 9.7.3 Propiedades predeterminadas .......................................................................................................... 172 9.7.4 Propiedades implementadas automticamente ............................................................................... 174 9.7.5 Propiedades de iterador .................................................................................................................... 175 9.8 Operadores ............................................................................................................................................... 175 9.8.1 Operadores unarios ........................................................................................................................... 177 9.8.2 Operadores binarios .......................................................................................................................... 177 9.8.3 Operadores de conversin ................................................................................................................ 178 9.8.4 Asignacin de operadores ................................................................................................................. 180 10. Instrucciones ......................................................................................................................................181 10.1 Control Flow ............................................................................................................................................ 181 10.1.1 Mtodos normales .......................................................................................................................... 181 10.1.2 Mtodos Iterator ............................................................................................................................. 182 10.1.3 Mtodos asincrnicos ..................................................................................................................... 184 10.1.4 Bloques y etiquetas ......................................................................................................................... 186 10.1.5 Parmetros y variables locales ........................................................................................................ 187 10.2 Instrucciones de declaracin local .......................................................................................................... 189 10.2.1 Declaraciones locales implcitas ...................................................................................................... 192 10.3 Instruccin With...................................................................................................................................... 192 10.4 Instruccin SyncLock ............................................................................................................................... 193 10.5 Instrucciones Event ................................................................................................................................. 194 10.5.1 Instruccin RaiseEvent .................................................................................................................... 194 10.5.2 Instrucciones AddHandler y RemoveHandler.................................................................................. 195 10.6 Instrucciones de asignacin .................................................................................................................... 196 10.6.1 Instrucciones de asignacin regular ................................................................................................ 196 10.6.2 Instrucciones de asignacin compuesta .......................................................................................... 198 10.6.3 Instrucciones de asignacin Mid ..................................................................................................... 198 10.7 Instrucciones de invocacin.................................................................................................................... 199 ivCopyright Microsoft Corporation 2013. Reservados todos los derechos.

Tabla de contenido 10.8 Instrucciones condicionales .................................................................................................................... 200 10.8.1 Instrucciones If...Then...Else ............................................................................................................ 200 10.8.2 Instrucciones Select...Case .............................................................................................................. 201 10.9 Instrucciones de bucle ............................................................................................................................ 203 10.9.1 Instrucciones While...End While y Do...Loop .................................................................................. 203 10.9.2 Instrucciones For...Next................................................................................................................... 204 10.9.3 Instrucciones For Each...Next .......................................................................................................... 206 10.10 Instrucciones de control de excepciones.............................................................................................. 210 10.10.1 Instrucciones de control estructurado de excepciones ................................................................ 210 10.10.1.1 Bloques Finally ....................................................................................................................... 211 10.10.1.2 Bloques Catch......................................................................................................................... 211 10.10.1.3 Instruccin Throw .................................................................................................................. 212 10.10.2 Instrucciones de control no estructurado de excepciones ........................................................... 213 10.10.2.1 Instruccin Error .................................................................................................................... 214 10.10.2.2 Instruccin On Error ............................................................................................................... 214 10.10.2.3 Instruccin Resume ................................................................................................................ 214 10.11 Instrucciones de bifurcacin ................................................................................................................. 215 10.12 Instrucciones de control de matrices ................................................................................................... 216 10.12.1 Instruccin ReDim ......................................................................................................................... 216 10.12.2 Instruccin Erase ........................................................................................................................... 217 10.13 Instruccin Using .................................................................................................................................. 218 10.14 Instrucciones Await............................................................................................................................... 219 10.15 Instrucciones yield ................................................................................................................................ 219 11. Expresiones........................................................................................................................................221 11.1 Clasificacin de expresiones ................................................................................................................... 221 11.1.1 Reclasificacin de expresiones ........................................................................................................ 222 11.2 Expresiones constantes .......................................................................................................................... 225 11.3 Expresiones enlazadas en tiempo de ejecucin ..................................................................................... 226 11.4 Expresiones simples ................................................................................................................................ 228 11.4.1 Expresiones literales ........................................................................................................................ 228 11.4.2 Expresiones entre parntesis .......................................................................................................... 228 11.4.3 Expresiones de instancia ................................................................................................................. 228 11.4.4 Expresiones de nombre simple ....................................................................................................... 228 11.4.5 Expresiones AddressOf .................................................................................................................... 230 11.5 Expresiones de tipo ................................................................................................................................. 231 11.5.1 Expresiones GetType ....................................................................................................................... 231 11.5.2 CommaList ::= Comma | CommaList CommaExpresiones TypeOf...Is .................................... 232 11.5.3 Expresiones Is .................................................................................................................................. 232 11.5.4 Expresiones GetXmlNamespace ...................................................................................................... 232 11.6 Expresiones de acceso a miembros ........................................................................................................ 233 11.6.1 Nombres de miembros y de tipos idnticos.................................................................................... 237 11.6.2 Instancias predeterminadas ............................................................................................................ 237 11.6.2.1 Instancias predeterminadas y nombres de tipos ..................................................................... 238 11.6.2.2 Clases de grupo ........................................................................................................................ 239 11.6.3 Recopilacin de mtodos de extensin .......................................................................................... 240 11.7 Expresiones de acceso a miembros de diccionario ................................................................................ 244 11.8 Expresiones de invocacin ...................................................................................................................... 244Copyright Microsoft Corporation 2013. Reservados todos los derechos.

v

Tabla de contenido 11.8.1 Resolucin de mtodos sobrecargados........................................................................................... 245 11.8.1.1 Especificidad de los miembros o los tipos dada una lista de argumentos............................... 253 11.8.1.2 Calidad de genricos ................................................................................................................ 254 11.8.1.3 Nivel de generalidad ................................................................................................................ 255 11.8.2 Aplicabilidad a lista de argumentos ................................................................................................ 255 11.8.3 Pasar y elegir argumentos para parmetros opcionales ................................................................. 257 11.8.4 Mtodos condicionales ................................................................................................................... 259 11.8.5 Inferencia de argumentos de tipo ................................................................................................... 259 11.9 Expresiones de ndice ............................................................................................................................. 261 11.10 Expresiones New ................................................................................................................................... 262 11.10.1 Expresiones de creacin de objetos .............................................................................................. 263 11.10.2 Expresiones de matriz ................................................................................................................... 265 11.10.2.1 Expresiones de creacin de matrices ..................................................................................... 265 11.10.2.2 Literales de matriz .................................................................................................................. 267 11.10.3 Expresiones de creacin de delegados.......................................................................................... 267 11.10.4 Expresiones de creacin de objetos annimos ............................................................................. 270 11.11 Expresiones de conversin ................................................................................................................... 273 11.12 Expresiones de operador ...................................................................................................................... 274 11.12.1 Prioridad y asociatividad de los operadores ................................................................................. 275 11.12.2 Operandos de objeto ..................................................................................................................... 275 11.12.3 Resolucin de operadores ............................................................................................................. 276 11.13 Operadores aritmticos ........................................................................................................................ 279 11.13.1 Operador unario de signo ms ...................................................................................................... 279 11.13.2 Operador unario de signo menos .................................................................................................. 279 11.13.3 Operador de suma ......................................................................................................................... 280 11.13.4 Operador de resta ......................................................................................................................... 281 11.13.5 Operador de multiplicacin ........................................................................................................... 282 11.13.6 Operadores de divisin.................................................................................................................. 282 11.13.7 Mod (Operador) ............................................................................................................................ 285 11.13.8 Operador de exponenciacin ........................................................................................................ 285 11.14 Operadores relacionales ....................................................................................................................... 286 11.15 Like (Operador) ..................................................................................................................................... 288 11.16 Operador de concatenacin ................................................................................................................. 289 11.17 Operadores lgicos ............................................................................................................................... 290 11.17.1 Cortocircuitar las operaciones lgicas ........................................................................................... 292 11.18 Operadores de desplazamiento ............................................................................................................ 293 11.19 Expresiones booleanas ......................................................................................................................... 294 11.20 Expresiones lambda .............................................................................................................................. 295 11.20.1 Cierres............................................................................................................................................ 299 11.21 Expresiones de consulta ....................................................................................................................... 301 11.21.1 Variables de intervalo .................................................................................................................... 302 11.21.2 Tipos consultables ......................................................................................................................... 303 11.21.3 Indizador de consultas predeterminado ....................................................................................... 305 11.21.4 Operador de consulta From .......................................................................................................... 305 11.21.5 Operador de consulta Join ............................................................................................................ 307 11.21.6 Operador de consulta Let .............................................................................................................. 308 11.21.7 Operador de consulta Select ......................................................................................................... 308 11.21.8 Operador de consulta Distinct....................................................................................................... 309 viCopyright Microsoft Corporation 2013. Reservados todos los derechos.

Tabla de contenido 11.21.9 Operador de consulta Where ........................................................................................................ 310 11.21.10 Operadores de consulta de particin .......................................................................................... 311 11.21.11 Operador de consulta Order By .................................................................................................. 311 11.21.12 Operador de consulta Group By .................................................................................................. 313 11.21.13 Operador de consulta Aggregate ................................................................................................ 315 11.21.14 Operador de consulta Group Join ............................................................................................... 316 11.22 Expresiones condicionales .................................................................................................................... 317 11.23 Expresiones literales XML ..................................................................................................................... 317 11.23.1 Reglas lxicas ................................................................................................................................. 318 11.23.2 Expresiones incrustadas ................................................................................................................ 319 11.23.3 Documentos XML .......................................................................................................................... 319 11.23.4 Elementos XML .............................................................................................................................. 321 11.23.5 Espacios de nombres XML ............................................................................................................. 323 11.23.6 Instrucciones de procesamiento XML ........................................................................................... 324 11.23.7 Comentarios XML .......................................................................................................................... 325 11.23.8 Secciones CDATA ........................................................................................................................... 325 11.24 Expresiones de acceso a miembros XML .............................................................................................. 325 11.25 Operador Await..................................................................................................................................... 327 12. Comentarios de documentacin .........................................................................................................331 12.1 Formato de comentario de documentacin ........................................................................................... 331 12.2 Etiquetas recomendadas ........................................................................................................................ 332 12.2.1 ................................................................................................................................................... 332 12.2.2 ............................................................................................................................................. 333 12.2.3 ....................................................................................................................................... 333 12.2.4 ..................................................................................................................................... 333 12.2.5 ......................................................................................................................................... 334 12.2.6 ................................................................................................................................................ 334 12.2.7 .............................................................................................................................................. 335 12.2.8 ........................................................................................................................................... 335 12.2.9 ...................................................................................................................................... 335 12.2.10 ................................................................................................................................. 336 12.2.11 ...................................................................................................................................... 336 12.2.12 ....................................................................................................................................... 336 12.2.13 ............................................................................................................................................. 337 12.2.14 ....................................................................................................................................... 337 12.2.15 .................................................................................................................................... 337 12.2.16 ................................................................................................................................. 338 12.2.17 .......................................................................................................................................... 338 12.3 Cadenas id. .............................................................................................................................................. 338 12.3.1 Ejemplos de cadena de identificador .............................................................................................. 339 12.4 Ejemplo de comentario de documentacin ........................................................................................... 342 13. Resumen de la gramtica ...................................................................................................................349 13.1 Gramtica lxica...................................................................................................................................... 349 13.1.1 Caracteres y lneas ........................................................................................................................... 349 13.1.2 Identificadores ................................................................................................................................. 350 13.1.3 Palabras clave .................................................................................................................................. 350Copyright Microsoft Corporation 2013. Reservados todos los derechos.

vii

Tabla de contenido 13.1.4 Literales ........................................................................................................................................... 351 13.2 Directivas de preprocesamiento ............................................................................................................. 353 13.2.1 Compilacin condicional.................................................................................................................. 353 13.2.2 Directivas de cdigo fuente externo ............................................................................................... 354 13.2.3 Directivas de regin ......................................................................................................................... 354 13.2.4 Directivas de suma de comprobacin externa ................................................................................ 354 13.3 Gramtica sintctica ............................................................................................................................... 354 13.3.1 Atributos .......................................................................................................................................... 355 13.3.2 Archivos de cdigo fuente y espacios de nombres ......................................................................... 355 13.3.3 Tipos ................................................................................................................................................ 357 13.3.4 Miembros de tipo ............................................................................................................................ 360 13.3.5 Instrucciones ................................................................................................................................... 365 13.3.6 Expresiones...................................................................................................................................... 370 14. Lista de cambios .................................................................................................................................381 14.1 Versin 7.1 a versin 8.0......................................................................................................................... 381 14.1.1 Cambios importantes ...................................................................................................................... 381 14.1.2 Cambios menores ............................................................................................................................ 382 14.1.3 Aclaraciones y erratas ..................................................................................................................... 383 14.1.4 Varios ............................................................................................................................................... 385 14.2 Versin 8.0 a versin 8.0 (2nd Edition) .................................................................................................... 386 14.2.1 Cambios menores ............................................................................................................................ 386 14.2.2 Aclaraciones y erratas ..................................................................................................................... 387 14.2.3 Varios ............................................................................................................................................... 388 14.3 Versin 8.0 (2nd Edition) a versin 9.0 .................................................................................................... 388 14.3.1 Cambios importantes ...................................................................................................................... 388 14.3.2 Cambios menores ............................................................................................................................ 388 14.3.3 Aclaraciones y erratas ..................................................................................................................... 389 14.3.4 Varios ............................................................................................................................................... 390 14.4 Versin 9.0 a versin 10.0....................................................................................................................... 390 14.4.1 Cambios importantes ...................................................................................................................... 390 14.4.2 Cambios menores ............................................................................................................................ 390 14.4.3 Aclaraciones y erratas ..................................................................................................................... 391 14.5 Versin 10.0 a versin 11.0..................................................................................................................... 393 14.5.1 Cambios importantes ...................................................................................................................... 393 14.5.2 Cambios menores ............................................................................................................................ 393 14.5.3 Aclaraciones y erratas ..................................................................................................................... 394 1. Introduction............................................................................................................................................ 1 1.1 Grammar Notation........................................................................................................................................ 1 1.2 Compatibility ................................................................................................................................................. 2 1.2.1 Kinds of compatibility breaks ................................................................................................................ 2 1.2.2 Impact Criteria ....................................................................................................................................... 3 1.2.3 Language deprecation ........................................................................................................................... 3 2. Lexical Grammar ..................................................................................................................................... 5 2.1 Characters and Lines ..................................................................................................................................... 5 2.1.1 Line Terminators.................................................................................................................................... 5 viiiCopyright Microsoft Corporation 2013. Reservados todos los derechos.

Tabla de contenido 2.1.2 Line Continuation .................................................................................................................................. 5 2.1.3 White Space ........................................................................................................................................... 7 2.1.4 Comments ............................................................................................................................................. 7 2.2 Identifiers ...................................................................................................................................................... 7 2.2.1 Type Characters ..................................................................................................................................... 8 2.3 Keywords....................................................................................................................................................... 9 2.4 Literals ......................................................................................................................................................... 11 2.4.1 Boolean Literals ................................................................................................................................... 11 2.4.2 Integer Literals ..................................................................................................................................... 11 2.4.3 Floating-Point Literals .......................................................................................................................... 12 2.4.4 String Literals ....................................................................................................................................... 13 2.4.5 Character Literals................................................................................................................................. 13 2.4.6 Date Literals ......................................................................................................................................... 14 2.4.7 Nothing ................................................................................................................................................ 15 2.5 Separators ................................................................................................................................................... 15 2.6 Operator Characters ................................................................................................................................... 15 3. Preprocessing Directives ....................................................................................................................... 17 3.1 Conditional Compilation ............................................................................................................................. 17 3.1.1 Conditional Constant Directives .......................................................................................................... 18 3.1.2 Conditional Compilation Directives ..................................................................................................... 19 3.2 External Source Directives .......................................................................................................................... 20 3.3 Region Directives ........................................................................................................................................ 20 3.4 External Checksum Directives ..................................................................................................................... 21 4. General Concepts .................................................................................................................................. 23 4.1 Declarations ................................................................................................................................................ 23 4.1.1 Overloading and Signatures ................................................................................................................ 24 4.2 Scope........................................................................................................................................................... 25 4.3 Inheritance .................................................................................................................................................. 25 4.3.1 MustInherit and NotInheritable Classes .............................................................................................. 27 4.3.2 Interfaces and Multiple Inheritance .................................................................................................... 27 4.3.3 Shadowing ........................................................................................................................................... 29 4.4 Implementation .......................................................................................................................................... 34 4.4.1 Implementing Methods ....................................................................................................................... 37 4.5 Polymorphism ............................................................................................................................................. 38 4.5.1 Overriding Methods ............................................................................................................................ 40 4.6 Accessibility ................................................................................................................................................. 43 4.6.1 Constituent Types ................................................................................................................................ 45 4.7 Type and Namespace Names...................................................................................................................... 46 4.7.1 Qualified Name Resolution for namespaces and types ...................................................................... 47 4.7.2 Unqualified Name Resolution for namespaces and types .................................................................. 47 4.8 Variables ..................................................................................................................................................... 49 4.9 Generic Types and Methods ....................................................................................................................... 49 4.9.1 Type Parameters.................................................................................................................................. 50 4.9.2 Type Constraints .................................................................................................................................. 52 4.9.3 Type Parameter Variance .................................................................................................................... 56 5. Attributes ............................................................................................................................................. 61 Copyright Microsoft Corporation 2013. Reservados todos los derechos. ix

Tabla de contenido 5.1 Attribute Classes ......................................................................................................................................... 62 5.2 Attribute Blocks .......................................................................................................................................... 63 5.2.1 Attribute Names .................................................................................................................................. 65 5.2.2 Attribute Arguments ........................................................................................................................... 65 6. Source Files and Namespaces ................................................................................................................ 69 6.1 Program Startup and Termination .............................................................................................................. 69 6.2 Compilation Options ................................................................................................................................... 70 6.2.1 Option Explicit Statement ................................................................................................................... 70 6.2.2 Option Strict Statement....................................................................................................................... 71 6.2.3 Option Compare Statement ................................................................................................................ 71 6.2.4 Integer Overflow Checks ..................................................................................................................... 71 6.2.5 Option Infer Statement ....................................................................................................................... 72 6.3 Imports Statement ...................................................................................................................................... 72 6.3.1 Import Aliases ...................................................................................................................................... 73 6.3.2 Namespace Imports............................................................................................................................. 76 6.3.3 XML Namespace Imports .................................................................................................................... 77 6.4 Namespaces ................................................................................................................................................ 77 6.4.1 Namespace Declarations ..................................................................................................................... 78 6.4.2 Namespace Members.......................................................................................................................... 79 7. Types .................................................................................................................................................... 81 7.1 Value Types and Reference Types .............................................................................................................. 81 7.1.1 Nullable Value Types ........................................................................................................................... 82 7.2 Interface Implementation ........................................................................................................................... 83 7.3 Primitive Types............................................................................................................................................ 84 7.4 Enumerations .............................................................................................................................................. 85 7.4.1 Enumeration Members ....................................................................................................................... 86 7.4.2 Enumeration Values ............................................................................................................................ 86 7.5 Classes ......................................................................................................................................................... 87 7.5.1 Class Base Specification ....................................................................................................................... 89 7.5.2 Class Members .................................................................................................................................... 90 7.6 Structures.................................................................................................................................................... 90 7.6.1 Structure Members ............................................................................................................................. 91 7.7 Standard Modules....................................................................................................................................... 92 7.7.1 Standard Module Members ................................................................................................................ 92 7.8 Interfaces .................................................................................................................................................... 93 7.8.1 Interface Inheritance ........................................................................................................................... 94 7.8.2 Interface Members .............................................................................................................................. 95 7.9 Arrays .......................................................................................................................................................... 96 7.10 Delegates .................................................................................................................................................. 98 7.11 Partial types .............................................................................................................................................. 99 7.12 Constructed Types .................................................................................................................................. 101 7.12.1 Open Types and Closed Types ......................................................................................................... 102 7.13 Special Types ........................................................................................................................................... 102 8. Conversions .........................................................................................................................................103 8.1 Implicit and Explicit Conversions .............................................................................................................. 103 xCopyright Microsoft Corporation 2013. Reservados todos los derechos.

Tabla de contenido 8.2 Boolean Conversions ................................................................................................................................ 103 8.3 Numeric Conversions ................................................................................................................................ 104 8.4 Reference Conversions ............................................................................................................................. 105 8.4.1 Reference Variance Conversions ....................................................................................................... 105 8.4.2 Anonymous Delegate Conversions .................................................................................................... 106 8.5 Array Conversions ..................................................................................................................................... 107 8.6 Value Type Conversions ............................................................................................................................ 109 8.6.1 Nullable Value Type Conversions ...................................................................................................... 112 8.7 String Conversions .................................................................................................................................... 113 8.8 Widening Conversions .............................................................................................................................. 113 8.9 Narrowing Conversions............................................................................................................................. 115 8.10 Type Parameter Conversions .................................................................................................................. 117 8.11 User-Defined Conversions ...................................................................................................................... 118 8.11.1 Most Specific Widening Conversion ................................................................................................ 119 8.11.2 Most Specific Narrowing Conversion .............................................................................................. 120 8.12 Native Conversions ................................................................................................................................. 121 8.13 Dominant Type........................................................................................................................................ 121 9. Type Members .....................................................................................................................................123 9.1 Interface Method Implementation ........................................................................................................... 123 9.2 Methods .................................................................................................................................................... 125 9.2.1 Regular, Async and Iterator Method Declarations ............................................................................ 127 9.2.2 External Method Declarations........................................................................................................... 129 9.2.3 Overridable Methods ........................................................................................................................ 130 9.2.4 Shared Methods ................................................................................................................................ 132 9.2.5 Method Parameters .......................................................................................................................... 132 9.2.5.1 Value Parameters ....................................................................................................................... 133 9.2.5.2 Reference Parameters................................................................................................................ 134 9.2.5.3 Optional Parameters .................................................................................................................. 135 9.2.5.4 ParamArray Parameters ............................................................................................................. 136 9.2.6 Event Handling................................................................................................................................... 137 9.2.7 Extension Methods ............................................................................................................................ 138 9.2.8 Partial Methods ................................................................................................................................. 142 9.3 Constructors.............................................................................................................................................. 143 9.3.1 Instance Constructors........................................................................................................................ 144 9.3.2 Shared Constructors .......................................................................................................................... 145 9.4 Events........................................................................................................................................................ 147 9.4.1 Custom Events ................................................................................................................................... 150 9.5 Constants .................................................................................................................................................. 152 9.6 Instance and Shared Variables .................................................................................................................. 153 9.6.1 Read-Only Variables .......................................................................................................................... 155 9.6.2 WithEvents Variables......................................................................................................................... 156 9.6.3 Variable Initializers ............................................................................................................................ 157 9.6.3.1 Regular Initializers ...................................................................................................................... 160 9.6.3.2 Object Initializers........................................................................................................................ 160 9.6.3.3 Array-Size Initializers .................................................................................................................. 160 9.6.4 System.MarshalByRefObject Classes................................................................................................. 161 9.7 Properties.................................................................................................................................................. 162Copyright Microsoft Corporation 2013. Reservados todos los derechos.

xi

Tabla de contenido 9.7.1 Get Accessor Declarations ................................................................................................................. 167 9.7.2 Set Accessor Declarations.................................................................................................................. 168 9.7.3 Default Properties ............................................................................................................................. 169 9.7.4 Automatically Implemented Properties ............................................................................................ 170 9.7.5 Iterator Properties ............................................................................................................................. 171 9.8 Operators .................................................................................................................................................. 172 9.8.1 Unary Operators ................................................................................................................................ 173 9.8.2 Binary Operators ............................................................................................................................... 173 9.8.3 Conversion Operators........................................................................................................................ 174 9.8.4 Operator Mapping ............................................................................................................................. 176 10. Statements ........................................................................................................................................177 10.1 Control Flow ............................................................................................................................................ 177 10.1.1 Regular Methods ............................................................................................................................. 177 10.1.2 Iterator Methods ............................................................................................................................. 178 10.1.3 Async methods ................................................................................................................................ 180 10.1.4 Blocks and Labels ............................................................................................................................. 182 10.1.5 Local Variables and Parameters ...................................................................................................... 183 10.2 Local Declaration Statements ................................................................................................................. 184 10.2.1 Implicit Local Declarations............................................................................................................... 187 10.3 With Statement....................................................................................................................................... 188 10.4 SyncLock Statement ................................................................................................................................ 188 10.5 Event Statements .................................................................................................................................... 189 10.5.1 RaiseEvent Statement ..................................................................................................................... 190 10.5.2 AddHandler and RemoveHandler Statements ................................................................................ 191 10.6 Assignment Statements .......................................................................................................................... 191 10.6.1 Regular Assignment Statements ..................................................................................................... 192 10.6.2 Compound Assignment Statements ................................................................................................ 193 10.6.3 Mid Assignment Statement ............................................................................................................. 194 10.7 Invocation Statements ............................................................................................................................ 194 10.8 Conditional Statements .......................................................................................................................... 195 10.8.1 If...Then...Else Statements ............................................................................................................... 195 10.8.2 Select Case Statements ................................................................................................................... 197 10.9 Loop Statements ..................................................................................................................................... 198 10.9.1 While...End While and Do...Loop Statements ................................................................................. 199 10.9.2 For...Next Statements...................................................................................................................... 200 10.9.3 For Each...Next Statements ............................................................................................................. 201 10.10 Exception-Handling Statements ........................................................................................................... 205 10.10.1 Structured Exception-Handling Statements .................................................................................. 205 10.10.1.1 Finally Blocks .......................................................................................................................... 206 10.10.1.2 Catch Blocks ........................................................................................................................... 206 10.10.1.3 Throw Statement ................................................................................................................... 207 10.10.2 Unstructured Exception-Handling Statements ............................................................................. 208 10.10.2.1 Error Statement ..................................................................................................................... 209 10.10.2.2 On Error Statement ................................................................................................................ 209 10.10.2.3 Resume Statement ................................................................................................................. 209 10.11 Branch Statements................................................................................................................................ 210 10.12 Array-Handling Statements .................................................................................................................. 211 xiiCopyright Microsoft Corporation 2013. Reservados todos los derechos.

Tabla de contenido 10.12.1 ReDim Statement .......................................................................................................................... 211 10.12.2 Erase Statement ............................................................................................................................ 212 10.13 Using statement .................................................................................................................................... 212 10.14 Await Statements.................................................................................................................................. 214 10.15 Yield Statements ................................................................................................................................... 214 11. Expressions ........................................................................................................................................215 11.1 Expression Classifications ....................................................................................................................... 215 11.1.1 Expression Reclassification .............................................................................................................. 216 11.2 Constant Expressions .............................................................................................................................. 219 11.3 Late-Bound Expressions .......................................................................................................................... 220 11.4 Simple Expressions.................................................................................................................................. 221 11.4.1 Literal Expressions ........................................................................................................................... 221 11.4.2 Parenthesized Expressions .............................................................................................................. 222 11.4.3 Instance Expressions ....................................................................................................................... 222 11.4.4 Simple Name Expressions ................................................................................................................ 222 11.4.5 AddressOf Expressions .................................................................................................................... 224 11.5 Type Expressions ..................................................................................................................................... 224 11.5.1 GetType Expressions ....................................................................................................................... 224 CommaList ::= Comma | CommaList Comma .................................................................................... 225 11.5.2 TypeOf...Is Expressions .................................................................................................................... 225 11.5.3 Is Expressions................................................................................................................................