el lenguaje de programacion csharp
Post on 22-Nov-2015
136 views
Embed Size (px)
TRANSCRIPT
El lenguaje de programacin C# ndice
Jos Antonio Gonzlez Seco Pgina 1
INTRODUCCIN A LA OBRA 7
REQUISITOS PREVIOS RECOMENDADOS 7 ESTRUCTURA DE LA OBRA 7 CONVENCIONES DE NOTACIN UTILIZADAS 7
TEMA 1: INTRODUCCIN A MICROSOFT.NET 9
MICROSOFT.NET 9 COMMON LANGUAGE RUNTIME (CLR) 9 MICROSOFT INTERMEDIATE LANGUAGE (MSIL) 12 METADATOS 14 ENSAMBLADOS 15 LIBRERA DE CLASE BASE (BCL) 18 COMMON TYPE SYSTEM (CTS) 19 COMMON LANGUAGE SPECIFICATION (CLS) 19
TEMA 2: INTRODUCCIN A C# 21
ORIGEN Y NECESIDAD DE UN NUEVO LENGUAJE 21 CARACTERSTICAS DE C# 21 ESCRITURA DE APLICACIONES 26 APLICACIN BSICA HOLA MUNDO! 26 PUNTOS DE ENTRADA 28 COMPILACIN EN LNEA DE COMANDOS 28 COMPILACIN CON VISUAL STUDIO.NET 30
TEMA 3: EL PREPROCESADOR 35
CONCEPTO DE PREPROCESADOR 35 DIRECTIVAS DE PREPROCESADO 35 CONCEPTO DE DIRECTIVA. SINTAXIS 35 DEFINICIN DE IDENTIFICADORES DE PREPROCESADO 36 ELIMINACIN DE IDENTIFICADORES DE PREPROCESADO 37 COMPILACIN CONDICIONAL 37 GENERACIN DE AVISOS Y ERRORES 40 CAMBIOS EN LA NUMERACIN DE LNEAS 40 MARCACIN DE REGIONES DE CDIGO 41
TEMA 4: ASPECTOS LXICOS 43
COMENTARIOS 43 IDENTIFICADORES 44 PALABRAS RESERVADAS 44 LITERALES 46 OPERADORES 48
TEMA 5: CLASES 55
El lenguaje de programacin C# ndice
Jos Antonio Gonzlez Seco Pgina 2
DEFINICIN DE CLASES 55 CONCEPTOS DE CLASE Y OBJETO 55 SINTAXIS DE DEFINICIN DE CLASES 55 CREACIN DE OBJETOS 58 OPERADOR NEW 58 CONSTRUCTOR POR DEFECTO 60 REFERENCIA AL OBJETO ACTUAL CON THIS 61 HERENCIA Y MTODOS VIRTUALES 61 CONCEPTO DE HERENCIA 61 LLAMADAS POR DEFECTO AL CONSTRUCTOR BASE 63 MTODOS VIRTUALES 64 CLASES ABSTRACTAS 66 LA CLASE PRIMEGENIA: SYSTEM.OBJECT 67 POLIMORFISMO 70 CONCEPTO DE POLIMORFISMO 70 MTODOS GENRICOS 71 DETERMINACIN DE TIPO. OPERADOR IS 72 ACCESO A LA CLASE BASE 72 DOWNCASTING 74 CLASES Y MTODOS SELLADOS 74 OCULTACIN DE MIEMBROS 75 MIEMBROS DE TIPO 81 ENCAPSULACIN 81
TEMA 6: ESPACIOS DE NOMBRES 85
CONCEPTO DE ESPACIO DE NOMBRES 85 DEFINICIN DE ESPACIOS DE NOMBRES 85 IMPORTACIN DE ESPACIOS DE NOMBRES 86 SENTENCIA USING 86 ESPECIFICACIN DE ALIAS 88 ESPACIO DE NOMBRES DISTRIBUIDOS 90
TEMA 7: VARIABLES Y TIPOS DE DATOS 91
DEFINICIN DE VARIABLES 91 TIPOS DE DATOS BSICOS 92 TABLAS 94 TABLAS UNIDIMENSIONALES 94 TABLAS DENTADAS 96 TABLAS MULTIDIMENSIONALES 97 TABLAS MIXTAS 99 COVARIANZA DE TABLAS 99 LA CLASE SYSTEM.ARRAY 99 CADENAS DE TEXTO 100 CONSTANTES 105 VARIABLES DE SLO LECTURA 106 ORDEN DE INICIALIZACIN DE VARIABLES 107
TEMA 8: MTODOS 109
CONCEPTO DE MTODO 109
El lenguaje de programacin C# ndice
Jos Antonio Gonzlez Seco Pgina 3
DEFINICIN DE MTODOS 109 LLAMADA A MTODOS 110 TIPOS DE PARMETROS. SINTAXIS DE DEFINICIN 111 PARMETROS DE ENTRADA 111 PARMETROS DE SALIDA 112 PARMETROS POR REFERENCIA 113 PARMETROS DE NMERO INDEFINIDO 113 SOBRECARGA DE TIPOS DE PARMETROS 114 MTODOS EXTERNOS 114 CONSTRUCTORES 115 CONCEPTO DE CONSTRUCTORES 115 DEFINICIN DE CONSTRUCTORES 116 LLAMADA AL CONSTRUCTOR 116 LLAMADAS ENTRE CONSTRUCTORES 117 CONSTRUCTOR POR DEFECTO 118 LLAMADAS POLIMRFICAS EN CONSTRUCTORES 119 CONSTRUCTOR DE TIPO 120 DESTRUCTORES 121
TEMA 9: PROPIEDADES 125
CONCEPTO DE PROPIEDAD 125 DEFINICIN DE PROPIEDADES 125 ACCESO A PROPIEDADES 126 IMPLEMENTACIN INTERNA DE PROPIEDADES 127
TEMA 10: INDIZADORES 129
CONCEPTO DE INDIZADOR 129 DEFINICIN DE INDIZADOR 129 ACCESO A INDIZADORES 130 IMPLEMENTACIN INTERNA DE INDIZADORES 131
TEMA 11: REDEFINICIN DE OPERADORES 133
CONCEPTO DE REDEFINICIN DE OPERADOR 133 DEFINICIN DE REDEFINICIONES DE OPERADORES 134 SINTAXIS GENERAL DE REDEFINICIN DE OPERADOR 134 REDEFINICIN DE OPERADORES UNARIOS 136 REDEFINICIN DE OPERADORES BINARIOS 137 REDEFINICIONES DE OPERADORES DE CONVERSIN 138
TEMA 12: DELEGADOS Y EVENTOS 143
CONCEPTO DE DELEGADO 143 DEFINICIN DE DELEGADOS 143 MANIPULACIN DE OBJETOS DELEGADOS 145 LA CLASE SYSTEM.MULTICASTDELEGATE 148 LLAMADAS ASNCRONAS 149 IMPLEMENTACIN INTERNA DE LOS DELEGADOS 152 EVENTOS 154
El lenguaje de programacin C# ndice
Jos Antonio Gonzlez Seco Pgina 4
CONCEPTO DE EVENTO 154 SINTAXIS BSICA DE DEFINICIN DE DELEGADOS 154 SINTAXIS COMPLETA DE DEFINICIN DE DELEGADOS 154
TEMA 13: ESTRUCTURAS 157
CONCEPTO DE ESTRUCTURA 157 DIFERENCIAS ENTRE CLASES Y ESTRUCTURAS 157 BOXING Y UNBOXING 158 CONSTRUCTORES 160
TEMA 14: ENUMERACIONES 163
CONCEPTO DE ENUMERACIN 163 DEFINICIN DE ENUMERACIONES 163 USO DE ENUMERACIONES 165 LA CLASE SYSTEM.ENUM 166
TEMA 15: INTERFACES 167
CONCEPTO DE INTERFAZ 167 DEFINICIN DE INTERFACES 167 IMPLEMENTACIN DE INTERFACES 169 ACCESO A MIEMBROS DE UNA INTERFAZ 172
TEMA 16: INSTRUCCIONES 175
CONCEPTO DE INSTRUCCIN 175 INSTRUCCIONES BSICAS 175 DEFINICIONES DE VARIABLES LOCALES 175 ASIGNACIONES 176 LLAMADAS A MTODOS 176 INSTRUCCIN NULA 176 INSTRUCCIONES CONDICIONALES 176 INSTRUCCIN IF 176 INSTRUCCIN SWITCH 177 INSTRUCCIONES ITERATIVAS 179 INSTRUCCIN WHILE 179 INSTRUCCIN DO...WHILE 180 INSTRUCCIN FOR 180 INSTRUCCIN FOREACH 181 INSTRUCCIONES DE EXCEPCIONES 185 CONCEPTO DE EXCEPCIN. 185 LA CLASE SYSTEM.EXCEPTION 186 EXCEPCIONES PREDEFINIDAS COMUNES 187 LANZAMIENTO DE EXCEPCIONES. INSTRUCCIN THROW 188 CAPTURA DE EXCEPCIONES. INSTRUCCIN TRY 188 INSTRUCCIONES DE SALTO 193 INSTRUCCIN BREAK 193 INSTRUCCIN CONTINUE 194 INSTRUCCIN RETURN 194
El lenguaje de programacin C# ndice
Jos Antonio Gonzlez Seco Pgina 5
INSTRUCCIN GOTO 194 INSTRUCCIN THROW 196 OTRAS INSTRUCCIONES 196 INSTRUCCIONES CHECKED Y UNCHECKED 196 INSTRUCCIN LOCK 197 INSTRUCCIN USING 198 INSTRUCCIN FIXED 200
TEMA 17: ATRIBUTOS 201
CONCEPTO DE ATRIBUTO 201 UTILIZACIN DE ATRIBUTOS 201 DEFINICIN DE NUEVOS ATRIBUTOS 203 ESPECIFICACIN DEL NOMBRE DEL ATRIBUTO 203 ESPECIFICACIN DEL USO DE UN ATRIBUTO 203 ESPECIFICACIN DE PARMETROS VLIDOS 205 LECTURA DE ATRIBUTOS EN TIEMPO DE EJECUCIN 205 ATRIBUTOS DE COMPILACIN 209 ATRIBUTO SYSTEM.ATTRIBUTEUSAGE 209 ATRIBUTO SYSTEM.OBSOLETE 209 ATRIBUTO SYSTEM.DIAGNOSTICS.CONDITIONAL 209
TEMA 18: CDIGO INSEGURO 211
CONCEPTO DE CDIGO INSEGURO 211 COMPILACIN DE CDIGOS INSEGUROS 211 MARCACIN DE CDIGOS INSEGUROS 212 DEFINICIN DE PUNTEROS 213 MANIPULACIN DE PUNTEROS 214 OBTENCIN DE DIRECCIN DE MEMORIA. OPERADOR & 214 ACCESO A CONTENIDO DE PUNTERO. OPERADOR * 215 ACCESO A MIEMBRO DE CONTENIDO DE PUNTERO. OPERADOR -> 215 CONVERSIONES DE PUNTEROS 216 ARITMTICA DE PUNTEROS 217 OPERADORES RELACIONADOS CON CDIGO INSEGURO 218 OPERADOR SIZEOF. OBTENCIN DE TAMAO DE TIPO 218 OPERADOR STACKALLOC. CREACIN DE TABLAS EN PILA. 219 FIJACIN DE VARIABLES APUNTADAS 220
TEMA 19: DOCUMENTACIN XML 223
CONCEPTO Y UTILIDAD DE LA DOCUMENTACIN XML 223 INTRODUCCIN A XML 223 COMENTARIOS DE DOCUMENTACIN XML 225 SINTAXIS GENERAL 225 EL ATRIBUTO CREF 225 ETIQUETAS RECOMENDADAS PARA DOCUMENTACIN XML 227 ETIQUETAS DE USO GENRICO 228 ETIQUETAS RELATIVAS A MTODOS 228 ETIQUETAS RELATIVAS A PROPIEDADES 229 ETIQUETAS RELATIVAS A EXCEPCIONES 230 ETIQUETAS RELATIVAS A FORMATO 230
El lenguaje de programacin C# ndice
Jos Antonio Gonzlez Seco Pgina 6
GENERACIN DE DOCUMENTACIN XML 232 GENERACIN A TRAVS DEL COMPILADOR EN LNEA DE COMANDOS 232 GENERACIN A TRAVS DE VISUAL STUDIO.NET 234 ESTRUCTURA DE LA DOCUMENTACIN XML 235 SEPARACIN ENTRE DOCUMENTACIN XML Y CDIGO FUENTE 237
TEMA 20: EL COMPILADOR DE C# DE MICROSOFT 239
INTRODUCCIN 239 SINTAXIS GENERAL DE USO DEL COMPILADOR 239 OPCIONES DE COMPILACIN 241 OPCIONES BSICAS 241 MANIPULACIN DE RECURSOS 244 CONFIGURACIN DE MENSAJES DE AVISOS Y ERRORES 245 FICHEROS DE RESPUESTA 247 OPCIONES DE DEPURACIN 249 COMPILACIN INCREMENTAL 250 OPCIONES RELATIVAS AL LENGUAJE 251 OTRAS OPCIONES 252 ACCESO AL COMPILADOR DESDE VISUAL STUDIO.NET 254
DOCUMENTACIN DE REFERENCIA 257
BIBLIOGRAFA 257 INFORMACIN EN INTERNET SOBRE C# 257 PORTALES 258 GRUPOS DE NOTICIAS Y LISTAS DE CORREO 258
El lenguaje de programacin C# Introduccin a la obra
Jos Antonio Gonzlez Seco Pgina 7
Introduccin a la obra
Requisitos previos recomendados En principio, para entender con facilidad esta obra es recomendable estar familiarizado con los conceptos bsicos de programacin orientada a objetos, en particular con los lenguajes de programacin C++ o Java de los que C# deriva. Sin embargo, estos no son requisitos fundamentales para entenderla ya que cada vez que en ella se introduce algn elemento del lenguaje se definen y explican los conceptos bsicos que permiten entenderlo. An as, sigue siendo recomendable disponer de los requisitos antes mencionados para poder moverse con mayor soltura por el libro y aprovecharlo al mximo.
Estructura de la obra Bsicamente el eje central de la obra es el lenguaje de programacin C#, del que no slo se describe su sintaxis sino que tambin se intenta explicar cules son las razones que justifican las decisiones tomadas en su diseo y cules son los errores ms difciles de detectar que pueden producirse al desarrollar de aplicaciones con l. Sin embargo, los 20 temas utilizados para ello pueden descomponerse en tres grandes bloques:
Bloque 1: Introduccin a C# y .NET: Antes de empezar a describir el lenguaje es obligatorio explicar el porqu de su existencia, y para ello es necesario antes introducir la plataforma .NET de Microsoft con la que est muy ligado. Ese es el objetivo de los temas 1 y 2, donde se explican las caractersticas y conceptos bsicos de C# y .NET, las novedosas aportaciones de ambos y se introduce la programacin y compilacin de aplicaciones en C# con el tpico Hola Mundo!
Bloque 2: Descripcin del lenguaje: Este bloque constituye el grueso de la
obra y est formado por los temas comprendidos entre el 3 y el 19. En ellos se describen pormenorizadamente los aspectos del lenguaje mostrando