Está en la página 1de 835

*-

..

I

r~

La biblia de

C#

Jeff Ferguson, Brian Patterson, Jason Beres, Pierre Boutquin y Meeta Gupta

Todos los nombrcs propios de programas. sistemas operatives. cquipos hardware. etc. que aparcccn Cll cstc libro SOli marcus rcgistradas de SIIS rcspcctivas compaftias II organizacioncs.

Rcscrvados todos los dcrcchox IJ contcnido de csta o hra c st a protcuido por la In. qUL c-n ablccc pcnas de PriSIOIl v () mulras adcma s de las cor r cspond icnt c s mdcmn iz acionc s por danos \ pcrlulClos. para lJUICIlCS rcprodujcrcn. pla1,!wrcll. distr ibuvcrcn 0 comu nrca sc n publica mc ntc en todo 0 en parte. una obra litcraria. a rt ixtic a 0 crc ntificu. 0 s u transformacion. interpretacion 0 cJecuclon artisuca fijada en c u a lquic r 111'0 de soport c (l c om un icada a Iran's de c ualqurcr mc.lio. Sill la prcccptiva a utor rv acton

Copyright (' 2003 bv Anaya Multimedia.

Original English language edition copyright (' 20()2 by Hungry Minds. Inc.

All rights reserved including the right of reproduction in whole or In part III any form This edition published b~ arrangement \\ ith the original publisher. Hungry Minds. Inc

Edicion espanola:

(' EDICIONES ANAYA MLJL TIMEDIA (GRlJPO ANAYA. SA). 2()()3 Juan Ignacio Luca de Tcna. I). 2X()27 Madrid

Deposito legal M 3 033 - 2()03

ISBN X4-41 )-14X4-4

Printed III Spain

Imprirnc Irnprimc Artcs Graficas Gucmo. S.L Febrero.32 2XOn Madrid.

Para mt [amtlut y 0I171g0.1 . .felT /' e rgu son

Este libro cst a dedicado a 1111 110. Brian Weston, al que 110 parecio tmportarle cuando jill de visita y pose t odo el ella con .\'11 JR,\'-80 Model II.

Urian Patterson

A Nil 111. (f1le [uc 10 mottvacion.

AIcelu Ciu pt a

Agradecimientos

Jeff Ferguson Pocos libros de estc tamafio ~ extension son cl fruto de un solo individuo \ cstc no cs una cxccpcion Estov en dcuda con mucha gentc por su avuda y apoyo micntras cscribia cstc Iibro En primer lugar. dcbo dar las gracias a mis padres por la cducacicn que recibi Sin sus patcrnalcs conscjos no me habria convcrtido en la persona que soy y no habria podido complctar ninguno de mis trabajos. Sicmprc os cstarc agradccido. no solo a vosotros. sino a toda la familia por cl amor v apovo que sicrnprc he rccibido

Me gustaria dar las gracias a todo cl mundo de Wiley pOI' su dircccion en la claboracion de cstc material. Gracias. Andrea Boucher. Sharon CO". Eric Newman v Chris Webb. por guiarrnc por cl intimidador mundo de la publicacion de libros tccnicos. Gracias tambicn a Rolf Crozier que discutio conmigo cstc provccto en primer lugar en sus primcros dias. Dcbo dar las gracias cspccialmcntc a mi colcga Bob Knutson. que revise los borradorcs del material de cstc libro.

Gracias a Greg Frankenfield y a Paul Fridman por crcar una cxcclcntc organizacion consultora basada en Microsoft que mc pcrmitc trabajar en los provcctos de mis clicntcs junto en los mios EI crccirnicnto tccnico que he cxpcrimcntado durante mi estancia en Magcnic ha sido incalculable Esto cs para que continue cl cxito de Magcnic Gracias a todo cl mundo de las listas de corrco y grupos de noticias de DOTNET en Internet. Estov aprcndicndo mucho sobrc .NET Framework y C# simplcmcntc lcycndo vucstros corrcos Los cnvios de aca para alla del banter me han dado una mayor cornprcnsion de como cncajan todas cstas nuevas piczas

Brian Patterson: Me gustaria dar las gracias a mi csposa. Aimee. por pcrdonarmc todas csas horas que pasc escondido en cl ordcnador para que pudiera cornplctar cstc libro Un agradccimicnto especial a Steve Cisco por su duro trabajo en cstc libro. que abrio camino para cl rcsto de nosotros: a Sharon CO". la cditora de adquisicioncs. que sicmprc me mantuvo en cl bucn camino: al editor de proyccto. Eric Newman. par aguantar todos mis rcgatcs: y al editor de la sene. Michael Lane Thomas. que revise todos y cada uno de los capitulos. hacicndo algunas sugcrcncias muv bucnas y proporcionando una aprcciable cornprcnsion de Microsoft v NET Framework

Pierre Boutquin: Sc ncccsito mucho trabajo para crcar cstc libro ~ no solo de la gente que aparccc en la portada Debo dar las gracias cspccialmcntc al cquipo de Wiley por su trcmcndo csmcro por producir un libro de calidad Los rcvisorcs se mcrcccn casi todo cl crcdito por haccrrnc parcccr un cscritor competcntc. Por ultimo. cstc trabajo no habria sido posiblc sin cl apoyo de mi familia y amigos Sandra. Andrea. Jennifer y Paul. Tindv y Docl. Marcel y Diana Ban. Margaret F ckcte. v John v N ad me Marshall

. .

Meeta Gupta: Agradczco a Anita que me diera la oportunidad. Pcro mi mayor agradccimicnto cs para Nitin pOL bucno. por todo .

..

Sabre los autores

Jeff Ferguson es conscjcro superior de Magcnic Technologies. una cornpafiia consultora de software dcdicada a resolver problemas cmprcsarialcs usando cxclusivamcntc hcrramicntas y tccnologia de Microsoft Ha sido prograrnador de software profcsional des de 19X9 y ha dcsarrollado softw arc para Unix. DOS y Windows crnp lcando C. Ct f Y C#. Pucdc cnvi a r un e-mail a Jeff en JeffFamageniccom (no olvidc incluir las tICS "F" en cl nombrc de 1a dircccion)

Brian Patterson actualmcntc trabaja para Affina. lnc.. como jcfc del cquipo tCCI1lCO. dondc suck trabajar con C++ en HP-UX 0 en cl desarrollo de Windows con cualquicr version de los lcnguajcs de Visual Studio. Brian ha est ado cscnbicndo para varias publicacioncs sobrc Visual Basic des de 19l)~ y ha co-cscrito varies libros rclacionados con .J\ET inc!u~endoAhgrollng to 1'11"1101 Hosie . NFl' y NhT Enterprise Dcvcl opment with 1 H NFl' Pucdc cncontrarsclc generalmente contribuycndo en los grupos de noticias de MSDN 0 pucdc poncrsc en contacto con cl por e-mail cn Brianlf l'attcrsono.msn.com.

Jason Beres ha sido programador de software durante I () a110S. Actualmcntc cs ascsor en Florida del Sur y trabaja cxclusivamcntc con tecnologia de MIcrosoft. Jason ticnc los ccrtificados MCT. MCSD \ MCDBA de MIcrosoft. Cuando no csta cnscfiando. ascsorando 0 cscribicndo. csta formatcando su disco duro. instalando los ultirnos productos beta de MIcrosoft y ponicndosc al dia de los ultimos cpisodios de "Star Trek"

Pierre Boutquin es arquitccto superior de soft" are en la tcsorcria de uno de los principalcs bancos canadicnscs. deride avuda a dcsarrollar software puntcro para la prcvcncion de ricsgos de mcrcado Ticnc mas de una dccada de cxpcricncia intrcducicndo sistemas cornputcr izados basados en cl PC con un exhaustive conocirnicnto del disciio de sistemas distribuidos. almaccnamicnto de datos. VIsual Basic. Visual C++ v SQL Ha co-cscrito muchos libros sobrc programacion y ha contribuido con material sobrc VB. COM+. XML \ SQL a otros libros Koshka y Sasha. sus dos adorablcs gatos de Birmania. ocupan casi todo cl tiempo librc de Pierre. Micntras los acar icia. suck pcnsar en 10 hcrrnoso que scria cncontrar mas ticmpo para volvcr al ajcdrcz 0 mantcncrsc informado sobrc Bclgica. su pais natal. Pucdc contactar con cl en boutquin o.hotmail.com

Meeta Gupta ticnc una liccnciatura en ingcnieria informatica Los sistemas de rcdcs son 10 que mas lc gusta. Actualmcntc trabaja en NIIT Ltd . dondc discria. dcsarrolla \ cscribc libros sobrc tcrnas 111u\ divcrsos. Ha co-cscrito libros sobrc

. .

TCP/IP. A+ Certification. ASP.NET v PHP. Tarnbicn ticnc una amplia cxpcricn-

CIa discfiando y dcsarrollando varias IL T. Apartc de cscr ibir. Mccta ha rcalizado cursos sobrc C++. Svbasc. Windows NT. Unix y HTML para una audicncia divcrsa. des de cstudiantcs hasta clientes corporativos

..

NIIT cs una cornpafiia de solucioncs globalcs TI que produce productos de cnscfianza multimedia pcrsonalizados y ticnc mas de 2.0()() centres de cnscfianza por todo cl rnundo NIIT ticnc mas de 4.()()() crnplcados en 37 paiscs y ticnc acucrdos cstratcgicos con varias de las principalcs corporacioncs. incluidos Microsoft y AT&T.

Sobre el editor de la serie

Michael Lane Thomas cs un activo programador de comunidades \ un analista de la industria informatica que actual mente pasa la mayor parte de su ticmpo difundiendo cl evangelic de Microsoft NET para Microsoft Micntras trabajaba con 111,1S de media docena de cditorialcs. Michael ha cscrito nurncrosos articulos tccnicos y ha cscnto 0 participado en cast 20 libros sobrc numcrosos tcmas tccnicos. incluycndo Visual Basic. Visual C++ \ tccnologias .NET. Es un prolifico defensor de la ccrtificacion de programas de Microsoft y va ha conscguido su MeSO. MCSE+L MeT MCP+SB y MCDBA.

Adcmas de sus cscritos tccnicos. tambicn pucdc cscuchar a Michael en las ondas de vcz en cuando. incluidos dos programas de radio scmanalcs en las cadcnas Entcrcom (http.z/wvvw.cntcrcom.corn/I y mas a mcnudo en la ciudad de Kansas en News Radio l)XOKMBZ (http.z/wwvc.kmbz corn/). Tarnbicn pucdc cncontrarsc con CI en Internet hacicndo un MSON Wcbcast (http/!\\\\wmicrosoft.eom/usa! wcbcasts/) dcbaticndo sobrc . NET. la nueva gcncracion de tccnologias aplicadas a la Red

Michael cmpczo su travcctoria tccnica en su cpoca univcrsitaria cn la Univcrsitv of Kansas. dondc gano sus galoncs \ un par de titulos Tras un breve trabajo como tccnico y ascsor corncrcial para Global Online Japan. con base en Tokio. rcgrcso a los Estados Unidos para ascender por la cscalcra corporativa. Ha ocupado pucstos variados. incluycndo cl de cncargado de la IT. ingcnicro de campo. instructor. consultor indcpcndicntc c incluso un breve trabajo como CTO intcrino de una cxitosa punto-corn. aunquc CI crcc que su actual papcl C0l110 cvangclista de NET para Microsoft cs cl mcjor dcl lotc. Pucdc contactar con CI via e-mail en ml thomas a .nuc rosoft. C0111 .

..

,

Indice

Agradccimicntos Sobrc los autorcs .

6 7

Sobrc cl editor de la scric X

1 ntroducci6n 29

Quicn dcbcria leer cste libro . 3()

C(:lI1lO csta organizado cstc libro . 3()

Parte I. Fundamcntos del lcnguajc C# . 3()

Parte II. Programacion oricntada a objctos con C# . 31

Parte III C# avanzado ..... 31

Parte IV Dcsarrollando solucioncs .NET usando C# 31

Parte V C# v .NET Framework . 31

Partc VI Apcndiccs 31

Como usar cstc libro 32

N ormas usadas en cstc libro . 32

Parte I. Fundamcntos del lenguaje C# 35

1. 1 ntroducci6n a C# 37

.NET Framework .

Desarrollo Web ..

Desarrollo de aplicacioncs ..

Entorno comun de cjccucion Bibliotecas de clasc .NET

3X 3X 30

40 41

..

Lcnguajcs de programacion . NET. Entorno ASP.NET .

Historia de C. C++ Y C# ... lntroduccion a C# .

Caractcristicas dcl lcnguajc Clascs .

Tipos de datos. Funcioncs

Variables Interfaces. Atributos

Como com pilar C #

Lcnguajc intcrmcdio de MIcrosoft (MSIL) Mctadatos

42 43 43 45 45 45 4()

47 47 4X 49 49 49 51 51

Ensamblados Resumen

52

2. Escribir su primer programa en C# 55

Como cscogcr un editor

La aplicacion Hello World ...

Como construir una clasc . EI mctodo MainO.

Como cscribir en la consola .

<sec> <sccalso>

55 56 56 57 57 5X 59 61 62 64 64 64 65 67 6X 6X 6X 6lJ 70 70 71 71 71 71 72

Compilacion y cjccucion del programa

Las palabras clave y los idcntificadorcs .

Uso de cspacios cn blanco .. .

Como iniciar programas con la funcion Mairu] .. Como comcntar cl codigo ..

Como usar comcntarios de una linea ...

Usar comcntar ios regulates . . .

Como gcncrar docurncntacion X M L a partir de corncntarios <c> .

<code> .. <example> <exception> . <list> ..... <param> <pararnrcf> ... <permission> <remarks> <returns> ...

<surnmarv>

<value> .

Resumen.. . .

7~

-'

73 73

3. Trabajar con variables 75

Como dar nornbrc a sus variables Asignacion de un tipo a una variable

Como aplicar tamafio a sus variables.

Como dcclarar sus variables .

Uso de valorcs por dcfccto en las variables Asignacion de valorcs a variables ..

Uso de matrices de variables.

Dcclaracion de matrices unidirncnsionalcs .

Como trabajar con los valorcs de las matrices unidimcnsionalcs . Inicializacion de valorcs de elementos de matriz

75 70 ]X ]X 79 X I X I X2

X3

Dcclaracion de matrices multidimcnsionalcs .....

Uso de matrices rcctangularcs Definicion de matrices cscalonadas ...

X.f X5 X5

X7

Tipos de valor v de rcfcrcncia XX

Como convcrtir tipos de variable Xl)

Convcrsioncs implicitas . . Xl)

Convcrsioncs cxplicitas ..... 9()

C61110 trabajar con cadcnas 92

Usa de caractcrcs cspccialcs en cadcnas 92

Dcsactivacion de los caractcrcs cspccialcs en cadcnas: l}.f

Como acccdcr a caractcrcs individualcs en la cadcna . l))

Dcclaracion de cnurncracioncs 9)

Resumen. 96

4. Expresioncs....................................................................................................... 99

C61110 usar los opcradorcs . l)l)

Uso de cxprcsioncs primarias I ()()

Como usar los Iitcralcs . 100

Litcralcs boolcanos.... I () I

C01110 usar los litcralcs cntcros en notaciones dccimalcs

y hcxadccimalcs . 101

Como usar los litcralcs rcalcs para \ alorcs de coma flotantc I ()3

Como usar los litcralcs de caractcr para asignar valorcs de caractcr . I ().f

Como usar los literales de cadcna para incrustar cadcnas . I ().f

Como usar los literales null. I ().f

Uso de idcntificadorcs ..

10) 10) I {)()

Exprcsioncs entre parcntcsis

Como Ilamar a mctodos con cxprcsioncs de acccso a micmbros ..

II1II