You are on page 1of 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 compaiia de soluciones globales TI que produce productos de ensciianza multimedia personalizados y tiene mas de 2.000 centros de ensefianza por todo el mundo. NIIT tiene mas de 4.000 empleados en 37 paises y tiene acuerdos vstratégicos con varias de las principales corporaciones. incluidos Microsoft vy AT&T Sobre el editor de la serie Michael Lane Thomas es un activo programador de comunidades y un analista de la industria informatica que actualmente pasa la mayor parte de su tiempo difundicndo el evangelio de Microsoft NET para Microsoft. Mientras trabajaba con mas de media docena de editoriales. Michael ha escrito numerosos articulos tecnicos v ha escrito 0 participado en casi 20 libros incluyendo Visual Basic. Visual C++ y tecnologias NET. Es un bre numerosos temas técnic prolifico defensor de la certificacion de programas de Microsoft y ya ha conse- guido su MCSD. MCSE+I. MCT. MCP+SB y MCDBA Ademas de sus escritos tecnicos. tambien puede escuchar a Michael en las ondas de vez en cuando. incluidos dos programas de radio semanales en las cade- nas Entercom (http://www.cntercom.comy) y mas a menudo en la ciudad de Kansas en News Radio 980K MBZ (http://www .kmbz.com/). También puede encontrarse con él en Internet haciendo un MSDN Webcast (http://www.microsoft.com/usa webcasts/) debatiendo sobre NET. la nueva generacion de tecnologias aplicadas ala Red Michael empezo su trayectoria técnica en su cpoca universitaria en la University of Kansas. donde gano sus galones y un par de titulos. Tras un breve trabajo como técnico y asesor comercial para Global Online Japan. con base en Tokio. regreso a los Estados Unidos para ascender por la escalera corporativa, Ha ocu- pado puestos variados. incluyendo el de encargado de la IT. ingenicro de campo instructor. consultor independiente ¢ incluso un breve trabajo como CTO interino de una exitosa punto-com. aunque ¢l cree que su actual papel como evangelista de NET para Microsoft es cl mejor del lote. Puede contactar con ¢l via e-mail en milthomas «@ microsoft.com 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 Como declarar directivas de espacio de nombre con la palabra clave using 293 Un rapido recorrido por los espacios de nombre de NET 295 Resumen 298 13. Interfaces Como definir una interfaz 303 Como definir métodos de interfaz 303 Como definir propiedades de interfaz 304 Como definir indizadores de interfaz 304, Como definir eventos de interfaz 305 Como derivar a partir de interfaces base 308 Como usar la palabra clave new para reutilizar identificadores 307 Como implementar interfaces en clases y estructuras 308 Como implementar métodos de interfaz con cl mismo nombre 310 Como acceder a miembros de interfaz 311 Consultar a un objeto por una interfaz 311 Como aceeder a una interfaz en un objeto 3l4 Declaraciones de interfaz y palabras clave de ambito 316 Como implementar interfaces definidas por .NET Framework 317 Como implementar foreach mediante [Enumerable |Enumerator 3i7 Como implementar limpieza mediante [Disposable 322 Resumen 325 14. Enumeraciones . Como declarar una cnumeracion Como usar una enumeracion Como usar operadores en valores de enumeracion Como usar la clase NET System.Enum Como recuperar nombres de enumeracion Como comparar valores de enumeracion Como descubrir cl tipo subyacente en tiempo de ejecucion Como recuperar todos los valores de enumeracion Analisis de cadenas para recuperar valores de cnumeracion Resumen 15. Eventos y delegados Sone 345 Como definir delegados 346 Como definir eventos 346 Como instalar eventos 347 Como desencadenar eventos 348 Como unirlo todo 348 Como estandarizar un disefio de evento 350, Como usar descriptores de acceso de eventos Como usar modificadores de eventos Eventos Eventos virtuales Eventos de reemplazo Eventos abstractos Resumen staticos 16. Control de excepciones Como especificar el procesamiento de excepciones 361 Como capturar excepciones 362 Como usar la palabra clave try 362 Como atrapar clases especificas de excepciones 362 Como liberar recursos después de una excepeion 304 La clase exception 365 Introduccion a las excepciones definidas por NET Framework 3635 OutOfMemoryException 366 366 367 TypelnitializationException 368 InvalidCastExpression 368 ArrayTypeMismatchException 369 IndexOutOfRangeException 369 DivideByZcroException 370 OverflowException 370 Como trabajar con sus propias excepciones 371 Como definir sus propias excepciones 372 Como iniciar sus excepciones 373 Como usar excepciones en constructores y propicdades 374 Resumen 376 17. Como trabajar con atributos .. 379 Atributos 380 Como trabajar con atributos de NET Framework 383 System. Diagnostics.Conditional Attribute 384 System SerializableAttribute class 386 System. ObsoleteAttribute class 388 Como escribir sus propias clases de atributo 390 Como restringir cl uso de atributos 390 Como permitir multiples valores de atributo 391 Como asignar parametros de atributo 392 Ejemplo explicativo de las clases de atributo 304 Resumen 396 18. Como utilizar versiones en sus clases ........0 El problema de las versiones 390 Como solucionar el problema de las versiones 402 Mediante cl modificador new 402 Mediante el modificador override 404 Resumen 406 19. Cémo trabajar con codigo no seguro seseeeeessees 409 Conceptos basicos de los punteros 410 Tipos de puntero dil Como compilar codigo no seguro 412 Como especificar punteros en modo no seguro 413 Como acceder a los valores de los miembros mediante punteros 4i4 Como usar punteros para fijar variables a una direccién especifica 415 Sintaxis del elemento de matriz puntero 416 Como comparar punteros 417 Calculo con punteros 417 Como usar el operador sizeof. 418 Cémo asignar espacio de la pila para la memoria 419 Resumen 419 20. Constructores avanzados de C Operadores implicitos y conversiones no validas 424 Inicializacion de estructuras 425 Como inicializar estructuras 426 Como resolver los problemas con la inicializacion 427 Clases derivadas 429 Como pasar clases derivadas 429 Como resolver problemas que surgen cuando se pasan clases derivadas . 430 Como usar no enteros como elementos de matriz 431 Resumen 434 Parte IV. Como desarrollar soluciones .NET usando C# 21. Cémo construir aplicaciones WindowsForms Arquitectura de WindowsForms La clase Form La clase Application Como crear la primera aplicacion WindowsForms Como compilar una aplicacion WindowsForms Ensamblados: como afiadir informacion de version a las aplicaciones WindowsForms 441 sembly Tithe 442 As y cription sembly Configuration Assembly Company Assembly Product AssemblyCopyright Assembly Trademark AssemblyCulture Assembly Version E] objeto Application con mas detalle Como afiadir control Eventos Application Como trabajar con eventos en el codigo Propicdades Application AllowQuit CommonAppDataRegistry CommonAppDataPath CompanyName CurrentCulture CurrentinputLanguage ExecutablePath LocalUserAppDataPath MessageLoop ProductName ProductVersion SafeTopLevelCaptionFormat StartupPath UserAppDataPath UserAppDataRegistry Metodos Application AddMessageFilter DoEvents Exit ExitThread OleRequired OnThreadException RemoveMessageFilter Run | formulario Jerarquia de las clases de control Como trabajar con controles en un formulario Como trabajar con recursos Como trabajar con recursos de cadena Como trabajar con recursos binarios Resumen 22. Como crear aplicaciones Web con WebForms .. Fundamentos de las aplicaciones ASP.NET Web Nuevas caracteristicas de ASP.NET Ejecucion en el entorno NET Framework Presentacion de WebForms Integracion con Visual Studio NET Presentacion de los controles de servidor Controles de usuario y compuestos Controles mas usados en WebForms Control Label Control TextBox Controles CheckBox y CheckBoxList Controles RadioButton y RadioButtonList Control ListBox Control DropDownList Control HyperLink Controles Table. TableRow y TableCell Control ImageButton Controles Button y Link Button Como crear y configurar una aplicacion Web Como crear un nuevo proyecto Como agregar controles al WebForm Como controlar eventos Viajes de ida y vuelta Controladores de eventos Como controlar la devolucion de datos Como usar cl estado de vista Resumen 23, Programacion de bases de datos con ADO.NET .... Clases Dataset y otras clases relacionadas Compatibilidad con OLE DB SQL Server Operaciones de bases de datos comunes mediante ADO.NET. Operaciones que no devuelven filas Operaciones de datos que devuelven entidades de fila unica Operaciones de datos que afectan a las entidades de fila unica Operaciones de introduccion de datos que afectan a las entidades de fila unica Operaciones de actualizacion que afectan a entidades de fila unica Operaciones de borrado que afectan a las entidades de fila tnica Operaciones de datos que devuelven conjuntos de filas Operaciones de datos que afectan a conjuntos de filas 479 479 479 480 483 487 487 489 491 491 402 495 496 407 499 500 S04 S09 S09 Operaciones que no devuclven datos jerarquicos Resumen 24, Cémo trabajar con archivos y con el registro de Windows... Como acceder a archivos Acceso binario Binary Writer BinaryReader Como supervisar los cambios de archivo Como usar la supervision de archivos Como codificar FileSystemWatcher Como manipular archivos Como copiar archivos Como climinar archivos Como trasladar archivos Como acceder al registro Como leer claves del registro Como eseribir claves de registro Como enumerar claves del registro Resumen 25. Como acceder a secuencias de datos .... Jerarquia de clases de E/S de datos: Como usar secuencias Como usar escritores Como usar lectores Como trabajar con secuencias E/S sincronica E/S asincronica Como leer de forma asincronica Como escribir de forma asincronica Escritores y lectores Como escribir secuencias con Binary Writer Como leer de secuencias con BinaryReader Como escribir XML con un formato correcto mediante la secucncia Xml Writer Resumen 26. Como dibujar con GDI+ Como trabajar con graficos Como trabajar con Image en GDI+ Como trabajar con Lipices y pinceles Como usar la clase Pen 59] Como usar la clase Brush 593 Resumen 397 27. Como construir servicios Web 599 Funcionamiento de los servicios Web 600, Servicios Web y Visual Studio NET 602 Lenguaje de descripcion de servicio Web (WSDL) 605 Como usar el Protocolo de acceso simple a objctos (SOAP) 607 Como crear servicios Web con Visual Studio NET 609. Como usar Visual Studio NET para acceder a un servicio Web 612 Resumen ol4 28. Como usar C# en ASP.NET .. 617 Como erear un servicio Web O18 Como crear una base de datos para un servicio Web 618 Conceptos del sistema de gestion de bases de datos relacionales 619 Tipos de datos de SQL Server 619 Como crear bases de datos y tablas 620 Como recuperar datos 621 Como insertar. actualizar y climinar datos Como usar procedimientos almacenados Como crear la estructura de la base de datos Como usar la plantilla Servicio Web ASP.NET Como agregar controles de datos al servicio Web Como codificar el servicio Web Como crear un cliente de servicio Web Como crear un nuevo proyecto de aplicacion Web ASP.NET Como agregar una referencia Web Como implementar los métodos del servicio Web Como implementar la aplicacion Implementacion de proyectos en Visual Studio NET Como usar un proyecto de implementacion para implementar una aplicacion Como implementar un proyecto usando la opcion Copiar proyecto Resumen 29. Como construir controles personalizados 641 Biblioteca de control de Windows 641 Propiedades 642 Metodos 644 Campos 645 Eventos 645 Aprender con un cyemplo 646 Como crear un temporizador de cuenta atras Como crear una prueba de carga CountDown Como usar una biblioteca de clases Como crear una clase para calcular el efecto de viento Resumen 30. Como construir aplicaciones méviles... La red inalambrica Introduccion al Mobile Interne! Emuladores Nokia. Pocket PC Microsoft Mobile Explorer Como crear un calculador de edades Funciones de los dispositivos moviles Funcionamiento de los controles moviles Como usar el control Calendar oolkit Como usar cl control Image Paginacién en dispositivos moviles Resumen Parte V. C# y NET Framework . 31. Cémo trabajar con ensamblados... Ensamblados Como encontrar ensamblados cargados Nombres seguros de ensamblado Como asignar la informacion de version Como asignar la informacion de referencia cultural Como asignar la informacion de clave Como trabajar con la clase Assembly Como encontrar la informacion de ubicacion del ensamblado Como encontrar puntos de entrada del ensamblado Como cargar ensamblados Como trabajar con informacion de tipo de en Como generar codigo nativo para ensamblados Resumen 32. Reflexién .. La clase Type Como recuperar informacion de tipo Como recuperar tipos mediante el nombre Como recuperar tipos mediante instancias amblado 646 651 653 653 656 659 659 660 660 660 660) 661 661 666 667 667 668 670 672 673 675 675 676 678 680 681 682 682 682 683 684 O88 689 691 693 694 694 694 695 Como recuperar tipos en un ensamblado Como interrogar a objctos Como generar codigo dinamico mediante la reflexion Resumen 33. Subprocesamiento en C#. Subprocesamicnto Multitarea preferente Prioridades de subproceso y bloqueo Multiprocesamiento simetrico Como usar los recursos: cuantos mas. mejor Dominios de aplicacion Ventajas de las aplicaciones de varios subprocesos Aplicaciones con procesos largos Aplicaciones de sondeo y escucha Boton Cancelar Como crear aplicaciones multiproceso Como ercar nuevos subprocesos Prioridad de los subprocesos Estado del subproceso Como unir subprocesos Como sincronizar subprocesos Sondeo y escucha Resumen 34. Como trabajar con COM Introduccion al Contenedor al que se puede Hamar en tiempo de ejecucion Como crear ensamblados NET a partir de componentes COM Como usar la utilidad TIbimp Como crear un componente COM Como usar el ensamblado de interoperabilidad desde C# Como hacer referencia a la DLL COM desde C# Como mangjar errores de interoperabilidad Como usar la invocacion de plataforma Resumen 38. Como trabajar con servicios COM+ .. El espacio de nombres System. EnterpriseServices La clase ServicedComponent Como registrar clases con COM+ Como usar atributos para clases COM+ ApplicationAccessC ontrol ApplicationActivation 696, 697 700 702 705 705 706 707 707 708 709 710 710 710 710 71 712 TS 716 719 721 722 723 727 728 729 729 731 735 739 740 743 T44 747 748 752 754 756 757 757 Application[D ApplicationName ApplicationQueuing AutoComplete ComponentAccessControl ConstructionEnabled JustinTimeActivation LoadBalancingSupported Security Role Como procesar transacciones Propicdades ACID Como escribir componentes de trans cciones Como acceder al contexto de objetos Resumen 36. Cémo trabajar con los servicios remotos de .NET.. Introduccion al entorno remoto Como crear un ensamblado de servidor remoto, Como crear un servidor remoto Como ficar canales v puertos Como especificar un formato de canal Espacio de nombres System Runtime. Remoting Channels. Tep Espacio de nombres System Runtime. Remoting Channels. Http Como activar cl objeto remoto Como registrar objctos con Ri terWellKnownService Ty pe Como registrar objetos con el método Configure Como eseribir el cliente remoto Resumen 37. C# y seguridad .NE uridad de codigo Direetiva de seguridad de codigo Permisos de codigo iridad de usuario iridad NET y basada en funciones Como asignar las funciones Windows Principales Permisos de acceso a codigo Como crear una sencilla solicitud de codigo de permiso Denegacién de permisos Como usar permisos basados en atributos Direetiva de seguridad Niveles de directiva de seguridad 758 758 758 759 759 789 760 760) 761 Tol 762 763 765 TOR 771 771 773 775 777 778 779 779 781 783 785 79) 794 797 798 799 799 800 802 R02 R06 806 807 809 810 Sil 8 Grupos de codigo Conjuntos de permisos con nombre Cémo alterar directivas de seguridad Resumen Parte VI. Apéndices. Apéndice A. Manual de XML. Objetivos de disetio de XML Objetivo 1: XML debe ser facilmente utilizable en Internet Objetivo 2: XML debe admitir una amplia varicdad de aplicaciones Objetivo 3: XML debe ser compatible con SGML Objetivo 4: Debe ser sencillo escribir programas que procesen documentos XML Objetivo 5: El numero de caracteristicas opcionales en XML debe mantenerse al minimo, preferentemente a cero Objetivo 6: Los documentos XML deben ser legibles para las personas y razonablemente claros Objetivo 7: El disefio de XML debe ser preparado rapidamente Objetivo 8: El disefio de XML debe ser formal y conciso Objetivo 9: Los documentos XML deben ser faciles de crear Objetivo 10: La concision del marcado XML es de minima importancia Breve leccion de HTML XML ~ HTML con ctiquetas definidas por el usuario Definiciones de tipo de documento Esquemas XML Espacios de nombre XML Apéndice B. Contenido del CD-ROM... indice alfabético . Introduccion La iniciativa NET Framework de Microsoft supone el cambio mas importan- te en la metodologia del desarrollo de software para un sistema operativo de Microsoft desde la introduccion de Windows. Este entorno esta construido usan- do una arquitectura que permite a los lenguajes de software trabajar juntos. com- partiendo recursos ¥ codigo. para proporcionar a los programadores las avanzadas herramientas necesarias para construir la s de eseritorio y de Internet. Visual Studio .NET de Microsoft incluye nuevas ver~ siones de sus productos de compilador Visual Basic y C++ dirigidas al desarrollo de NET. al igual que un lenguaje completamente nuevo Hamado C# Este libro le mostrara como escribir codigo usando este novisimo lenguaje Todos los términos de lenguaje tales como declaraciones. variables. bucles de control y clases. son tratados con detalle. Ademas. cl libro le ensefiara a usar C# guiente generacion de aplicaciones. para programar tareas con las que los programadores suclen enfrentarse en el mundo real, La ultima parte del libro explica como usar C# para desarrollar paginas Web. acceder a bases de datos. trabajar con objetos COM y COM+ heredados. desarrollar aplicaciones de escritorio para Windows. trabajar con va- rios conceptos de NET Framework y mucho mas EI principal objetivo de este libro es el desarrollo NET usando C# como el lenguaje de implementacion y el compilador de linea de comandos C# de NET Framework como la principal herramienta de desarrollo, El desarrollo de C# empleando la herramienta Visual Studio NET no se trata en este libro. aunque es algo que se puede dominar facilmente una vez que se comprendan bien los fun- damentos del desarrollo NET usando C# Quién deberia leer este libro Este libro fue escrito teniendo en mente a los programadores novatos y los expertos. Sino conoce absolutamente nada sobre las bases del desarrollo de soft- ware. este libro le iniciara en sus fundamentos. mostrandole como funcionan las variables. los bucles de control y las clases, El libro también esta dirigido a los programadores de cualquier nivel. mostrandoles las herramientas NET disponi- bles para el desarrollo en C# y proporcionandoles trucos para hacer que sus propias aplicaciones en C# funcionen perfectamente dentro de las directrices de desarrollo de NET Framework Si ya esta introducido en el mundo de la creacién de aplicaciones NET. en- contrara en este libro un recurso muy util porque cubre casi todos los aspectos del desarrollo NET exhaustivamente, Las primeras tres partes dei libro sirven de punto de referencia ilustrativo para usar las caracteristicas del lenguaje C# En cambio. las dos tiltimas partes estan dedicadas a mostrar C# como plataforma de desarrollo de aplicaciones. ilustrando cl papel de C# en aplicaciones de escri- torio. Web. bases de datos y basadas en componentes. En este libro se asume que es la primera vez que utiliza C# y pretende proporcionar una comprension del lenguaje sin exigir un conocimiento previo. Sin embargo. el libro tambien supone que cl lector esta familiarizado con los entornos de aplicaciones usados en con- juncion con sus aplicaciones C# Las ultimas partes del libro abordan el uso de C# con aplicaciones de escrito- rio. Web. bases de datos y basadas en componentes. pero no explica esas plata- formas con detalle. En su lugar. el libro supone que cl lector tiene un conocimicnto practico de esas plataformas Como esta organizado este libro te libro esta organizado en seis partes: Parte |: Fundamentos del lenguaje C# Esta primera parte del libro proporciona una breve vision general de la familia de lenguajes de programacién C y pasa a tratar los aspectos sintacticos basicos de C#. Variables. declaraciones. bucles de control de flujo y Hamadas de metodo. todas son tratadas. Los programadores principiantes también encontraran mate- rial explicativo sobre el uso de estos elementos sintacticos ¥ aprenderan a clabo- rar codigo con estos conceptos

You might also like