Está en la página 1de 835
LA BIBLIA Jeff Ferguson Brian Patterson Jason Beres AANANYAN La biblia de C# Jeff Ferguson, Brian Patterson, Jason Beres, Pierre Boutquin y Meeta Gupta AANNAYA\ Todos los nombres propios de programas. sistemas operativos. equipos hardware etc. que aparecen en este libro son marcas registradas de sus respectivas compaiiias u organizaciones Reservados todos los derechos. 1:1 contenido de esta obra est protegide por ta ley, que establece penas de prision y 0 multas, ademas de las correspondientes indemnizaciones por daios y perjuicios. para quienes reprodujeren aren. distribuyeren © comunieasen publi- nente. en todo o en parte, una obra hiteraria arlistica © cientifica, 0 su transformacion interpretacion © eyecucion artistica fijad en cualquier tipo de soporte o comunicada a traves de cualquier medio. sin la preeeptiva autorizacion Copyright © 2003 by Anaya Multimedia Original English language edition copyright © 2002 by Hungry Minds ts reserved including the right of reproduction in whole or in ement with the part in any form. This edition published by arran original publisher. Hungry Minds. Inc Edicion espafiola © EDICIONES ANAYA MULTIMEDIA (GRUPO ANAYA. S.A.). 2003 Juan Ignacio Luca de Tena. 15, 28027 Madrid Deposito legal: M. 3.033 - 2003 ISBN: 84-4 15-1484-4 Printed in Spain Imprime: Imprime Artes Graficas Guemo. $.L Febrero. 32. 28022 Madrid Para mi familia y amigos Jett Ferguson ste libro este dedicado a mi tio, Brian Weston, al que no parecio importarle cuando fui de visita y pasé todo el dia con su TRS-80 Model IL Brian Patterson A Nutin, que fue lea motivacion Meeta Gupta Agradecimientos Jeff Ferguson: Pocos libros de este tamaiio y extension son el fruto de un solo individuo y éste no es una excepcion. Estoy en deuda con mucha gente por su ayuda ¥ apoyo mientras escribia este libro. En primer lugar. debo dar las gra- cias a mis padres por la educacion que recibi. Sin sus paternales consejos no me habria convertido en la persona que soy v no habria podido completar ninguno de mis trabajos. Siempre os estaré agradecido. no solo a vosotros. sino a toda la familia por el amor ¥ apoyo que siempre he recibido. Me gustaria dar las gracias a todo cl mundo de Wiley por su direccion en la vlaboracion de este material. Gracias. Andrea Boucher, Sharon Cox. Eric Newman y Chris Webb. por guiarme por el intimidador mundo de la publicacion de libros tecnicos. Gracias tambien a Rolf Crozier. que discutio conmigo este proyecto en primer lugar en sus primeros dias. Debo dar las gracias especialmente a mi coleza Bob Knutson. que reviso los borradores del material de este libro Gracias a Greg Frankenfield v a Paul Fridman por crear una excelente organi- zacion consultora basada en Microsoft que me permite trabajar en los proyectos de mis clientes junto en los mios. El crecimiento técnico que he experimentado durante mi estancia en Magenic ha sido incalculable. Esto es para que continue el éxito de Magenic. Gracias a todo el mundo de las listas de correo y grupos de noticias de DOTNET en Internet. Estoy aprendiendo mucho sobre NET Framework y C# simplemente leyendo vuestros correos. Los envios de aca para alla del banter me han dado una mayor comprension de como encajan todas estas nuevas piezas Brian Patterson: Me gustaria dar las gracias a mi esposa. Aimee. por perdo- narme todas esas horas que pasé escondido en cl ordenador para que pudicra completar este libro. Un agradecimiento especial a Steve Cisco por su duro traba- jo en este libro. que abrié camino para el resto de nosotros: a Sharon Cox. la editora de adquisiciones. que siempre me mantuvo cn el buen camino: al editor de proyecto. Eric Newman. por aguantar todos mis regates: y al editor de la serie. Michael Lane Thomas. que reviso todos y cada uno de los capitulos. haciendo algunas sugerencias muy buenas y proporcionando una apreciable comprension de Microsoft y NET Framework Pierre Boutquin: Se necesit6 mucho trabajo para crear este libro y no solo de la gente que aparece en la portada. Debo dar las gracias especialmente al equipo de Wiley por su tremendo esmero por producir un libro de calidad. Los revisores se merecen casi todo cl crédito por hacerme parecer un escritor competente. Por ultimo. este trabajo no habria sido posible sin el apoyo de mi familia y amigos Sandra. Andrea. Jennifer y Paul. Tindy y Doel. Marcel y Diana Ban. Margaret Fekete. y John y Nadine Marshall Meeta Gupta: Agradezco a Anita que me diera la oportunidad. Pero mi mayor agradecimiento es para Nitin por. bueno. por todo Sobre los autores Jeff Ferguson es conscjero superior de Magenic Technologies. una compa- ‘iia consultora de software dedicada a resolver problemas empresariales usando exclusivamente herramientas y tecnologia de Microsoft. Ha sido programador de software profesional desde 1989 y ha desarrollado software para Unix. DOS y Windows empleando C. C++ y C#. Puede enviar un e-mail a Jeff en JeffF amagenic.com (no olvide incluir las tres "F" en el nombre de la direccion) Brian Patterson actualmente trabaja para Affina. Inc.. como jefe del equipo técnico. donde sucle trabajar con C++ en HP-UX 0 en el desarrollo de Windows con cualquier version de los Ienguajes de Visual Studio. Brian ha estado eseri- bicndo para varias publicaciones sobre Visual Basic desde 1994 y ha co-escrito varios libros relacionados con .NET. incluyendo Migrating to Visual Basic NET y NET Enterprise Development with VB.NET, Puede encontrarsele general- mente contribuyendo en los grupos de noticias de MSDN o puede ponerse en contacto con el por e-mail en BrianDPatterson @ msn.com Jason Beres ha sido programador de software durante 1) aitos. Actualmente es asesor en Florida del Sur y trabaja exclusivamente con tecnologia de Microsoft Jason tiene los certificados MCT. MCSD ¥ MCDBA de Microsoft. Cuando no esta ensefiando. asesorando 0 escribiendo. esta formateando su disco duro. insta- lando los ultimos productos beta de Microsoft ¥ poniéndose al dia de los ultimos episodios de "Star Trek” Pierre Boutquin cs arquitecto superior de software en la tesoreria de uno de los principales bancos canadienses. donde ayuda a desarrollar software puntero para la prevencion de riesgos de mercado. Tiene mas de una década de experien- cia introduciendo sistemas computerizados basados en el PC con un exhaustivo conocimiento del diseio de sistemas distribuidos. almacenamiento de datos. Vi- sual Basic. Visual C++ v SQL. Ha co-escrito muchos libros sobre programacion y ha contribuido con material sobre VB. COM+. XML y SQL a otros libros Koshka y Sasha. sus dos adorables gatos de Birmania. ocupan casi todo el tiempo libre de Pierre. Mientras los acaricia. sucle pensar en lo hermoso que seria encon- trar mas tiempo para volver al ajedrez o mantenerse informado sobre Belgica. su pais natal. Puede contactar con ¢l en boutquin ¢ hotmail.com Meeta Gupta tiene una licenciatura en ingenicria informatica. Los sistemas de redes son lo que mas le gusta. Actualmente trabaja en NIIT Ltd.. donde disefia. desarrolla y escribe libros sobre temas muy diversos. Ha co-escrito libros sobre TCP/IP. A+ Certification. ASP.NET y PHP. Tambicn tiene una amplia experien- cia disefiando y desarrollando varias ILT. Aparte de escribir. Mecta ha realizado cursos sobre C++. Sybase. Windows NT. Unix y HTML para una audiencia diversa. desde estudiantes hasta clientes corporativos NIIT es una compafia de soluciones globales TI que produce productos de ensciianza multimedia personalizados y tiene mas de 2.000 centros de ensefianza por todo cl mundo. NIIT tiene mas de 4.000 empleados en 37 paises y tiene - cs ee eee reenter eee tent ed naice Agradecimientos 6 Sobre los autores 7 Sobre el editor de la serie 8 Introduccién 29 Quién deberia leer este libro 30 Como esta organizado este libro 30 Parte 1: Fundamentos del lenguaje C# 30 Parte I: Programacion orientada a objetos con C# Parte Il: C# avanzado 31 31 Parte IV: Desarrollando soluciones NET usando C# 31 Parte V: C# v NET Framework 31 Parte VI: Apéndices 31 Como usar este libro 32 Normas usadas en este libro 32 Parte I. Fundamentos del lenguaje C# 35 1. Introduccion a C#.... 37 N Framework 38 Desarrollo Web 38 Desarrollo de aplicaciones 30 Entorno comin de ejecucion 40 Bibliotecas de clase NET 4 Lenguajes de programacion NET Entorno ASP.NET Historia de C. C++ vy C# Introduccion a C# Caracteristicas del lenguaje Clases Tipos de datos Funciones Variables Interfaces Atributos Como compilar C# Lenguaje intermedio de Microsoft (MSIL) Metadatos Ensamblados Resumen 2. Escribir su primer programa en C# Como escoger un editor La aplicacion Hello World Como construir una clase El método Main() Como escribir en la consola Compilacion y ejecucion del programa Las palabras clave y los identificadores Uso de espacios en blanco Como iniciar programas con la funcién Main() Como comentar el codigo Como usar comentarios de una linea Usar comentarios regulares Como generar documentacion XML a partir de comentarios example also> 68 69 70 70 71 71 71 7I 72 Resumen 3. Trabajar con variables Como dar nombre a sus variables Asignacion de un tipo a una variable Como aplicar tamaiio a sus variables Como declarar sus variables Uso de valores por defecto en las variables Asignacién de valores a variables Uso de matrices de variables Declaracion de matrices unidimensionales Como trabajar con los valores de las matrices unidimensionales Inicializacion de valores de elementos de matriz Declaracion de matrices multidimensionales Uso de matrices rectangulares. Definicion de matrices escalonadas Tipos de valor y de referencia Como convertir tipos de variable Convers ones implicitas Conversiones explicitas Como trabajar con cadenas Uso de caracteres especiales en cadenas Desactivacion de los caracteres especiales en cadenas adena Como acceder a caracteres individuales en la Deelaracion de cnumeraciones Resumen 4. Expresiones.... Como usar los operadores ) de expresiones primarias Como usar los literales Literals booleanos Como usar los litcrales enteros en notaciones decimales y hexadecimales Como usar los literales reales para valores de coma flotante Como usar los literales de caracter para asignar valores de caracter Como usar los literales de cadena para incrustar cadenas Como usar los literales null Uso de identificadores Expresiones entre parentesis Como Hamar a métodos con expresiones de acceso a miembros 19 81 81 82 83 84 85 85 87 88 89 89 90 92 92 o4 95 95 % 99 99 100 100 101 101 103 104 104 104 105 105 106 Como Ilamar a metodos con expresiones de invocacion Como especificar elementos de matriz con expresiones de acceso a clementos Como acceder a objetos con la palabra clave this Como acceder a objetos con la palabra clave base Como usar los operadores postfijo de incremento y de decremento Creacion de nuevos tipos de referencia con el operador new Como devolver informacion sobre el tipo con el operador typeof, Como usar operadores checked y unchecked Las expresiones unarias Como devolver valores de operando con cl operador unario mas Como devolver valores de operando con cl operador unario menos Expresiones negativas booleanas con el operador de negacién logica El operador de complemento bit a bit Como prefijar operadores de incremento vy decremento Los operadores aritméticos Como asignar nuevos valores con el operador de asignacion Uso del operador multiplicacion Uso del operador division Uso del operador resto Uso del operador suma Uso del operador resta Los operadores de desplazamiento Como mover bits con cl operador de desplazamiento a la izquierda Como mover bits con el operador de desplazamiento a la derecha Como comparar expresiones con operadores relacionales Como comprobar la igualdad con el operador de igualdad Como comprobar la desigualdad con el operador de desigualdad Como comprobar valores con el operador menor que Como comprobar valores con el operador mayor que Como comprobar valores con el operador menor o igual que Como comprobar valores con el operador mayor 0 igual que Operadores logics enteros Como calcular valores boolvanos con el operador AND Como calcular valores booleanos con el operador exclusive OR Icular valores boolcanos con el operador OR Como ci Operadores condicionales logicos Comparacién de valores booleanos con el operador AND condicional Comparacion de valores booleanos con el operador OR condicional Comparacion de valores booleanos con el operador logico condicional El orden de las operaciones Resumen 106 107 108 109 109 110 110 110 H3 13 13 13 Il4 5. Como controlar el flujo del cédigo Instrucciones de C# 131 Instrucciones para declarar variables locales 132 Como usar instrucciones de seleccion para seleccionar Ia ruta del codigo. 133 La instruccion if 134 La instruccion switch 135 Como usar instrucciones de iteracion para ejecutar instrucciones incrustadas 37 La instruccion while 13 La instruccion do 13 La instruccion for 139 La instruccion foreach 142 Instrucciones de salto para moverse por cl codigo 142 La instruccion break 143 La instruccion continue 143 La instruccién goto 14 Como usar instrucciones para realizar calculos matematicos con seguridad 14s Resumen 145 6. Como trabajar con métodos... eeenenees wee 149 La estructura de un método Tipo devuelto Nombre del método Lista de parametros Cuerpo del método Como Hamar a un metodo Tipos de parametros Parametros de entrada Parametros de salida Parametros de referencia Matrices de parametros Sobrecarga de métodos Métodos virtuales Métodos sobrecargados Resumen 7. Agrupacién de datos usando estructuras. sesseineeees 169 Como declarar una estructura 170 Como usar estructuras en el codigo 71 Como definir métodos en estructuras 173 Como usar metodos constructores 174 Como Hamar a métodos desde estructuras 177 Como definir propicdades en estructuras Como definir indizadores en estructuras Como definir interfaces en estructuras Como usar los tipos simples de C# como estructuras Resumen Parte II. Programacién orientada a objetos con C# .. 8. Escribir cédigo orientado a objetos Clases v objetos Terminologia del disco de software orientado a objetos Abstraccion Tipos de datos abstractos Encapsulacion Herencia Herencia simple Herencia miltiple Polimorfismo Resumen 9. Clases de C# Como declarar una clase El metodo Main Como usar argumentos de linea de comandos Como devolver valores El cuerpo de la clase Como usar constantes Como usar campos Como usar meétodos Como usar propiedades Descriptores de acceso get Descriptores de acceso set Propiedades de solo lectura y de solo escritura Como usar eventos Como usar indizadores Como usar operadores Como usar constructores Como usar destructores Como usar los tipos de clase Como usar la palabra clave this como identificador EI modificador static Como usar campos estaticos Como usar constantes estaticas 178 179 181 182 Como usar metodos estaticos Resumen 10. Como sobrecargar operadores... Operadores unarios sobrecargables Como sobrecargar el unario mas Como sobrecargar el unario menos Como sobrecargar complementos bit a bit Como sobrecargar el incremento prefijo Como sobrecargar el decremento prefijo Como sobrecargar los operadores true y false Operadores binarios sobrecargables Operadores de conversion sobrecargables Operadores que no pueden sobrecargarse Resumen 1. Herencia de clase... Como compilar con clases multiples Como especificar una clase base en C# Ambito Como reutilizar identificadores de miembros en las clases derivadas Como trabajar con métodos heredados Metodos virtuales y de reemplazo Polimorfismo Métodos abstractos Clases base: Como trabajar con propicdades ¢ indizadores heredados Como usar la palabra clave base Como acceder a campos de clase base con la palabra clave base Clases selladas Contencion y delegacion La clase de objeto NET Como usar boxing y unboxing para convertir a tipo object v desde el tipo object Resumen Parte III. C# avanzado... 12. Cémo trabajar con espacios de nombre... Como declarar un espacio de nombre Como declarar un espacio de nombre en varios archivos fuente Como usar clases en un espacio de nombre Como ayudar a los espacios de nombre mediante la palabra clave using Como crear alias de nombres de clase con la palabra clave using NN ms nv wo ee 4 240 22 244

También podría gustarte