BRADLEY L. JONES C# Guida completa C# Guida completa Titolo originale: Teach Yourself C# in 21 Days Autore: Bradley L. Jones Authorized translation from the English language edition, entitled “Teach Yourself C# in 21 Days”, published by Sams, Copyright © 2002 Copyright © 2002 – APOGEO s.r.l. Via Natale Battaglia 12 – 20127 Milano (Italy) Telefono: 02-28970277 – Fax: 02-26116334 Email: [email protected] Sito Web: www.apogeonline.com ISBN 88-503-2010-8 Traduzione: Stefano Albarelli, Daniela Carlini, Giuliano Catani, Monica Marzolini, Marica Perotti, Georges Piriou, Antonella Rivalta Realizzazione editoriale: ART Servizi Editoriali s.p.a. – Bologna Copertina e progetto grafico: Enrico Marcandalli Responsabile di produzione: Vitiano Zaini Tutti i diritti sono riservati a norma di legge e a norma delle convenzioni internazionali. Nessuna parte di questo libro può essere riprodotta con sistemi elettronici, meccanici o altri, senza l’autorizzazione scritta dell’Editore. Nomi e marchi citati nel testo sono generalmente depositati o registrati dalle rispettive case produttrici. Sommario Introduzione ...........................................................xxi Supposizioni e requisiti .................................................................................... xxi Il booksite ........................................................................................................... xxi Convenzioni utilizzate in questo libro ........................................................ xxii Settimana I - A colpo d'occhio Giorno 1 - Iniziare con C# .......................................3 Che cos’è C# ......................................................................................................... 3 Perché C#? ............................................................................................................. 3 C# è semplice ...................................................................................................... C# è di ultima generazione .................................................................................. C# è orientato agli oggetti ................................................................................... C# è potente e flessibile ...................................................................................... C# è un linguaggio costituito da poche istruzioni ............................................... C# è modulare ..................................................................................................... C# sarà molto diffuso ........................................................................................... 4 4 4 5 5 6 6 C# e gli altri linguaggi di programmazione ...................................................... 6 Preparazione alla programmazione ................................................................... 7 Ciclo di sviluppo del programma ...................................................................... 8 Creare il codice sorgente .................................................................................... 8 Eseguire un programma C# ................................................................................. 9 Compilare codice sorgente C# .......................................................................... 10 Completamento del ciclo di sviluppo ............................................................... 11 iv C# Il vostro primo programma C# ...................................................................... 12 Inserire e compilare hello.cs ............................................................................. 13 Tipi di programmi C# ....................................................................................... 16 Domande e risposte .......................................................................................... 17 Verifica .................................................................................................................. 18 Quiz ................................................................................................................... 18 Esercizi .............................................................................................................. 18 Giorno 2 - Comprendere i programmi C# ..........21 Applicazioni C# .................................................................................................. 21 Commenti .......................................................................................................... 22 Parti fondamentali di un’applicazione C# ..................................................... 25 Spazio bianco .................................................................................................... Parole chiave C# ................................................................................................ Letterali .............................................................................................................. Identificatori ...................................................................................................... 26 26 27 27 Struttura di un’applicazione C# ...................................................................... 27 Espressioni e istruzioni C# ................................................................................ 27 Istruzione vuota ................................................................................................. 27 Analisi del Listato 2.1 ........................................................................................ 28 Righe 1-4: commenti ......................................................................................... Righe 5, 7, 13, 17, 21 e 23: spazio bianco ......................................................... Riga 6: istruzione using ..................................................................................... Riga 8: dichiarazione di classe ........................................................................... Righe 9, 11, 26 e 27: caratteri di punteggiatura ................................................ Riga 10: Main () ................................................................................................. Righe 14, 15 e 16: dichiarazioni ........................................................................ Riga 20: l’istruzione Assignment ....................................................................... Riga 24 e 25: richiamo di funzioni .................................................................... 28 28 28 28 28 29 29 29 29 Programmazione orientata agli oggetti ......................................................... 29 Concetti orientati agli oggetti ............................................................................ 30 Oggetti e classi .................................................................................................. 31 Visualizzare le informazioni di base ............................................................... 31 Stampa di informazioni aggiuntive .................................................................... 33 Domande e risposte .......................................................................................... 34 Sommario v Verifica .................................................................................................................. 35 Quiz ................................................................................................................... 35 Esercizi .............................................................................................................. 35 Giorno 3 - Informazioni da archiviare con le variabili .........................................................39 Nomi delle variabili ............................................................................................ 39 Utilizzo delle variabili ........................................................................................ 40 Dichiarazione di una variabile ........................................................................... Assegnazione di valori alle variabili ................................................................... Impostazione di valori iniziali nelle variabili ..................................................... Come usare le variabili non inizializzate ........................................................... 41 41 43 44 La memoria del computer ............................................................................... 45 Tipi di dato C# ................................................................................................... 46 Tipi di variabili numeriche ................................................................................ 46 Tipi di dato integrali .......................................................................................... 48 Virgola mobile ................................................................................................... 54 Tipi di dati più semplici rispetto a .NET ........................................................... 56 Letterali e variabili a confronto ...................................................................... 58 Letterali numerici .............................................................................................. 58 Letterali booleani ............................................................................................... 59 Letterali delle stringhe ....................................................................................... 59 Costanti ................................................................................................................ 60 Tipi di riferimento .............................................................................................. 60 Domande e risposte .......................................................................................... 61 Verifica .................................................................................................................. 62 Quiz ................................................................................................................... 62 Esercizi .............................................................................................................. 62 Giorno 4 - Utilizzo degli operatori .......................65 Tipi di operatori ................................................................................................. 65 Tipi di operatori unari ...................................................................................... 65 Tipi di operatori binari ...................................................................................... 66 Tipi di operatori ternari ..................................................................................... 66 Segni di punteggiatura ....................................................................................... 66 vi C# L’operatore di base di assegnazione .............................................................. 67 Operatori matematici/aritmetici .................................................................... 68 Addizione e sottrazione ..................................................................................... Operatori di moltiplicazione ............................................................................. Moltiplicazione .................................................................................................. Divisione ............................................................................................................ Operazioni matematiche unarie ........................................................................ 68 69 69 69 71 Operatori relazionali ......................................................................................... 74 L’istruzione if ..................................................................................................... 74 Operatori logici condizionali ............................................................................. 76 Operatori logici bit per bit .............................................................................. 79 Operatori dei tipi ............................................................................................... 80 L’operatore sizeof .............................................................................................. 80 L’operatore condizionale ................................................................................. 80 Precedenza degli operatori .............................................................................. 81 Modifica dell’ordine di precedenza ................................................................... 82 Conversione dei tipi di dati ............................................................................. 83 Promozione degli operatori ............................................................................ 84 Per i più coraggiosi ............................................................................................ 84 Archiviazione delle variabili in memoria ........................................................... Operatori di spostamento ................................................................................. Operatori logici ................................................................................................. L’operatore logico bit per bit OR ...................................................................... L’operatore logico bit per bit AND ................................................................... L’operatore logico NOT .................................................................................... 84 86 86 87 87 87 Domande e risposte .......................................................................................... 89 Verifica .................................................................................................................. 90 Quiz ................................................................................................................... 90 Esercizi .............................................................................................................. 90 Giorno 5 - Istruzioni di controllo ..........................93 Controllo del flusso del programma ............................................................. 93 Come usare le istruzioni di selezione ........................................................... 93 Ancora qualche parola sull’istruzione if ............................................................ 93 Nidificazione e sovrapposizione di istruzioni if ................................................ 95 Sommario vii L’istruzione switch ............................................................................................ 98 Tipi gestiti dalle istruzioni switch ................................................................... 101 Utilizzo delle istruzioni iterative ................................................................... 102 L’istruzione while ............................................................................................ L’istruzione do ................................................................................................. L’istruzione for ................................................................................................ Le espressioni dell’istruzione for ..................................................................... 102 106 108 111 Come usare il comando goto ....................................................................... 112 Le istruzioni label ............................................................................................ 112 Nidificazione del flusso ................................................................................... 114 Domande e risposte ........................................................................................ 114 Verifica ................................................................................................................ 115 Quiz ................................................................................................................. 115 Esercizi ............................................................................................................ 115 Giorno 6 - Le classi ...............................................117 Ancora sulla programmazione orientata agli oggetti ............................... 117 Incapsulamento ............................................................................................... Polimorfismo ................................................................................................... Ereditarietà ...................................................................................................... Riuso ................................................................................................................ Oggetti e classi ................................................................................................ 117 118 118 118 119 Definizione di una classe ................................................................................ 119 Dichiarazioni di una classe ............................................................................. 119 I componenti di una classe .............................................................................. 121 Componenti di dati o campi .......................................................................... 121 Accesso ai componenti di dati ........................................................................ Come usare i componenti di dati .................................................................... Usare le classi come componenti di dati ......................................................... Tipi nidificati ................................................................................................... 122 123 126 127 Variabili statiche ............................................................................................... 127 La classe applicazione ...................................................................................... 130 Proprietà ............................................................................................................ 130 Introduzione ai namespace ............................................................................ 133 Namespace nidificati ....................................................................................... 135 viii C# Domande e risposte ........................................................................................ 135 Verifica ................................................................................................................ 135 Quiz ................................................................................................................. 136 Esercizi ............................................................................................................ 136 Giorno 7 - Metodi di classe e funzioni membro 139 Introduzione ai metodi ................................................................................... 139 Uso dei metodi ................................................................................................. 139 Flusso del programma con metodi .............................................................. 141 Sintassi di un metodo ...................................................................................... 142 Intestazione di un metodo ............................................................................... Dati di ritorno dei metodi ................................................................................ Denominazione dei metodi ............................................................................. Corpo di un metodo ........................................................................................ 142 143 143 143 Passaggio di valori ai metodi .......................................................................... 148 Metodi statici ................................................................................................... 149 Gli attributi di accesso ai parametri ................................................................. 149 Tipi dei metodi di classe ................................................................................. 155 Metodi di accesso alle proprietà ...................................................................... 155 Distruttori/finalizzatori .................................................................................... 160 Domande e risposte ........................................................................................ 162 Verifica ................................................................................................................ 163 Quiz ................................................................................................................. 163 Esercizi ............................................................................................................ 163 Settimana I - In riepilogo Il programma WR01.cs ................................................................................... 165 La documentazione XML ................................................................................. Il codice in profondità ..................................................................................... Il metodo Main ................................................................................................ Il metodo GetMenuChoice .............................................................................. Le opzioni di menu principali ......................................................................... La classe point ................................................................................................. La classe line .................................................................................................... Le altre classi ................................................................................................... 174 175 176 176 177 177 177 178 Sommario ix Settimana II - A colpo d’occhio Giorno 8 - Memorizzazione avanzata dei dati: strutture, enumeratori e array .............181 Strutture ............................................................................................................ 181 Confronto tra strutture e classi ....................................................................... Membri di struttura ......................................................................................... Nidificazione delle strutture ............................................................................ Metodi delle strutture ...................................................................................... Costruttori di struttura .................................................................................... Distruttori di una struttura .............................................................................. 181 182 184 186 187 189 Enumeratori ...................................................................................................... 189 Modifica del valore predefinito degli enumeratori .......................................... 192 Modifica del tipo dei valori di un enumeratore ............................................... 194 Uso degli array per memorizzare i dati ...................................................... 196 Creazione di array ............................................................................................ Array multidimensionali .................................................................................. Creazione di un array contenente array di diverse dimensioni ...................... Lunghezze degli array e controllo associato .................................................... Come usare gli array nelle classi e nelle strutture ........................................... Come usare l’istruzione foreach ...................................................................... 196 201 202 203 205 205 Domande e risposte ........................................................................................ 206 Verifica ................................................................................................................ 207 Quiz ................................................................................................................. 207 Esercizi ............................................................................................................ 208 Giorno 9 - Accesso avanzato ai metodi ..............209 Overloading dei metodi .................................................................................. 209 Overloading di funzioni ................................................................................... 210 Overloading di un costruttore ......................................................................... 213 Comprensione delle definizioni di metodo ..................................................... 216 Come usare una serie variabile di parametri ............................................ 217 Come usare la parola chiave params con tipi di dato differenti ...................... Alcuni dettagli sulla parola chiave params ...................................................... Il metodo Main e gli argomenti da riga di comando ....................................... Area di validità locale ...................................................................................... 219 221 221 223 x C# Differenziazione tra le variabili di classe e le variabili locali ........................... 225 Modificatori dell’area di validità di una classe ................................................. 226 Classi senza oggetti .......................................................................................... 226 Costruttori privati ............................................................................................ 227 Ancora qualche parola sui namespace ........................................................ 229 Denominazione di un namespace ................................................................... 229 Dichiarazione di un namespace ...................................................................... 229 Il comando using e i namespace ..................................................................... 231 Domande e risposte ........................................................................................ 233 Verifica ................................................................................................................ 234 Quiz ................................................................................................................. 234 Esercizi ............................................................................................................ 234 Giorno 10 - Gestione delle eccezioni ..................237 Il concetto di gestione dei problemi ............................................................ 237 Come impedire gli errori con un codice logico .............................................. 237 Qual è la causa delle eccezioni? ...................................................................... 238 Gestione delle eccezioni ................................................................................ 239 Uso di try e catch ............................................................................................ Rilevamento delle informazioni sull’eccezione ............................................... Come utilizzare più di una catch per una sola istruzione try .......................... Come funziona l’ordine di gestione delle eccezioni ....................................... 240 241 242 244 Aggiunta di obbligatorietà con finally .......................................................... 244 Eccezioni comuni ............................................................................................. 250 Definizione di classi di eccezione personalizzate ...................................... 251 Come generare eccezioni personalizzate ................................................... 252 Nuova esecuzione di un’eccezione ................................................................. 255 Confronto tra istruzioni checked e unchecked ........................................ 256 Sintassi per checked e unchecked .................................................................. 258 Domande e risposte ........................................................................................ 258 Verifica ................................................................................................................ 259 Quiz ................................................................................................................. 259 Esercizi ............................................................................................................ 259 Sommario xi Giorno 11 - Ereditarietà .......................................261 Concetti di base sull’ereditarietà ................................................................. 261 Ereditarietà singola .......................................................................................... 262 Utilizzare l’ereditarietà .................................................................................... 265 Come usare i metodi della classe di base nei metodi ridefiniti ....................... 270 Polimorfismo e classi ereditate ..................................................................... 270 Metodi virtuali ................................................................................................... 273 Come usare le classi astratte ........................................................................ 276 Come sigillare una classe ............................................................................... 279 Object, la classe di base per antonomasia ................................................. 280 I metodi della classe Object ............................................................................ 281 Boxing e unboxing .......................................................................................... 282 Come usare le parole chiave is e as con le classi: conversioni di classe ........................................................................................ 285 La parola chiave is ........................................................................................... 285 La parola chiave as .......................................................................................... 287 Array di oggetti di tipo diverso .................................................................... 287 Domande e risposte ........................................................................................ 292 Verifica ................................................................................................................ 293 Quiz ................................................................................................................. 293 Esercizi ............................................................................................................ 294 Giorno 12 - Input e output ...................................295 Input e output da e verso la console ........................................................... 295 Formattazione delle informazioni ................................................................ 295 Formattazione di valori numerici .................................................................... 298 Visualizzazione di valori enumerati ................................................................. 308 Lavorare con le stringhe ................................................................................ 310 Metodi della classe String ................................................................................ 311 Il carattere speciale per la formattazione delle stringhe: @ ............................ 313 Costruzione di stringhe ................................................................................... 314 Lettura di informazioni dalla Console ......................................................... 316 Utilizzo del metodo Read ................................................................................ 317 xii C# Utilizzo del metodo ReadLine .......................................................................... 318 La classe Convert ............................................................................................. 319 Domande e risposte ........................................................................................ 322 Verifica ................................................................................................................ 323 Quiz ................................................................................................................. 323 Esercizi ............................................................................................................ 324 Giorno 13 - Interfacce ..........................................325 Panoramica sulle interfacce ........................................................................... 325 Classi e interfacce ............................................................................................ 326 Come utilizzare le interfacce ........................................................................... 326 Utilità delle interfacce ..................................................................................... 326 Definizione di interfacce ................................................................................. 327 Definizione di un’interfaccia dotata di membri di tipo metodo ...................... 328 Come specificare le proprietà nelle interfacce ............................................... 331 Come servirsi di interfacce multiple ........................................................... 333 Membri di interfaccia espliciti ....................................................................... 335 Derivazione di nuove interfacce da interfacce preesistenti ................... 338 Come nascondere i membri di un’interfaccia ........................................... 338 Domande e risposte ........................................................................................ 340 Verifica ................................................................................................................ 341 Quiz ................................................................................................................. 341 Esercizi ............................................................................................................ 341 Giorno 14 - Indexer, funzioni delegate ed eventi ................................................................343 Usare un indexer ............................................................................................. 343 Conoscere le funzioni delegate .................................................................... 346 Lavorare con gli eventi ................................................................................... 350 Creare eventi .................................................................................................... 350 Delega di un evento ........................................................................................ La classe EventArgs .......................................................................................... Il codice della classe Event .............................................................................. Creare gestori di eventi ................................................................................... 351 351 352 353 Sommario Associare eventi e gestori di eventi ................................................................. Conclusione ..................................................................................................... Gestori di eventi multipli (Multicasting) ......................................................... Rimuovere un gestore di eventi ...................................................................... xiii 354 354 356 358 Domande e risposte ........................................................................................ 360 Verifica ................................................................................................................ 360 Quiz ................................................................................................................. 360 Esercizi ............................................................................................................ 361 Settimana II - In riepilogo ....................................363 Enumerazioni per le carte .............................................................................. 371 Un tipo card ...................................................................................................... 371 Una classe deck ................................................................................................ 372 Il gioco delle carte ........................................................................................... 373 Analizzare l’intero mazzo di carte ............................................................... 373 Settimana III - A colpo d’occhio Giorno 15 - Utilizzo delle classi di base di .NET ......................................................377 Classi di .NET Framework ............................................................................. 377 La Common Language Specification ............................................................... Organizzazione in namespace dei tipi ............................................................. Standard ECMA ................................................................................................ Verifica delle classi del framework .................................................................. 377 378 378 378 Come lavorare con un timer ........................................................................ 379 Come ottenere informazioni sulle cartelle e sull’ambiente di sistema 381 Come lavorare con le routine matematiche ............................................. 384 Come lavorare con i file ................................................................................. 387 Copia di un file ................................................................................................ 387 Come ottenere informazioni sui file ................................................................ 390 Come lavorare con i file di dati .................................................................... 392 Concetto di flusso ............................................................................................ 392 Ordine di lettura dei file .................................................................................. 392 xiv C# Metodi di creazione e di apertura dei file ........................................................ 393 Come lavorare con altri tipi di file ................................................................... 400 Domande e risposte ........................................................................................ 401 Verifica ................................................................................................................ 401 Quiz ................................................................................................................. 401 Esercizi ............................................................................................................ 402 Giorno 16 - Creazione di form di Windows .......403 Come lavorare con form e finestre ............................................................. 403 Creazione di form di Windows .................................................................... 403 Opzioni di compilazione ................................................................................. 404 Analisi della vostra prima applicazione Windows ........................................... 405 Il metodo Application.Run .............................................................................. 406 Come personalizzare l’interfaccia di un form ........................................... 407 La barra del titolo di un form .......................................................................... La dimensione di un form ............................................................................... Colori di sfondo di un form ............................................................................. Bordi di un form .............................................................................................. 407 410 412 416 Aggiunta di controlli a un form ..................................................................... 418 Utilizzo del controllo Label ............................................................................. Suggerimenti per l’utilizzo dei controlli .......................................................... Utilizzo dei pulsanti ......................................................................................... Eventi relativi ai pulsanti ................................................................................. Creazione del pulsante OK .............................................................................. Utilizzo delle caselle di testo ........................................................................... Come lavorare con gli altri controlli ............................................................... 418 421 423 424 428 428 432 Domande e risposte ........................................................................................ 433 Verifica ................................................................................................................ 433 Quiz ................................................................................................................. 433 Esercizi ............................................................................................................ 434 Giorno 17 - Creare applicazioni di finestre ........435 Lavorare con i pulsanti radio ........................................................................ 435 Raggruppare pulsanti radio ............................................................................. 435 Lavorare con i contenitori ............................................................................... 439 Sommario xv Lavorare con le caselle di riepilogo ............................................................. 442 Aggiungere voci all’elenco (della casella di riepilogo) .................................... 443 Aggiungere un menu al modulo .................................................................... 447 Creare un menu di base .................................................................................. Creare menu multipli ...................................................................................... Utilizzare menu selezionati .............................................................................. Creare un menu pop-up .................................................................................. 447 450 453 457 Visualizzare finestre di dialogo e moduli pop-up ...................................... 459 La classe MessageBox ...................................................................................... 460 Finestre di dialogo preesistenti che potete usare in Windows ....................... 462 Far apparire la vostra finestra di dialogo ......................................................... 466 Domande e risposte ........................................................................................ 469 Verifica ................................................................................................................ 469 Quiz ................................................................................................................. 469 Esercizi ............................................................................................................ 470 Giorno 18 - Sviluppo Web ...................................473 Creazione di applicazioni Web ..................................................................... 473 Concetto di componente ............................................................................... 473 Servizi Web ....................................................................................................... 474 Creazione di un componente semplice ........................................................... Creazione di un servizio Web .......................................................................... Creazione di proxy .......................................................................................... Chiamata di un servizio Web ........................................................................... 475 476 479 482 Creazione di applicazioni Web classiche .................................................... 483 I moduli Web ................................................................................................... 484 Creazione di un’applicazione ASP.NET di base ............................................... 484 Controlli ASP.NET ........................................................................................... 488 Domande e risposte ........................................................................................ 496 Verifica ................................................................................................................ 497 Quiz ................................................................................................................. 497 Esercizi ............................................................................................................ 497 xvi C# Giorno 19 - Le due D di C#: Direttive e Debugging ..........................................499 Cos’è il Debugging? ......................................................................................... 499 Tipi di errori ..................................................................................................... 499 Ricerca degli errori .......................................................................................... 500 Walkthrough: tracciamento del codice ...................................................... 500 Direttive del preprocessore .......................................................................... 501 Dichiarazioni di preelaborazione .................................................................... Elaborazione condizionale (#if, #elif, #else, #endif) ....................................... Riferire errori e avvertimenti nel vostro codice (#error, #warning) ............... Cambiare numeri di riga .................................................................................. Una breve analisi delle aree ............................................................................. 501 505 506 508 510 Usare i debugger .............................................................................................. 510 Domande e risposte ........................................................................................ 510 Verifica ................................................................................................................ 511 Quiz ................................................................................................................. 511 Esercizi ............................................................................................................ 511 Giorno 20 - Overloading degli operatori ............515 Overloading delle funzioni rivisitate ............................................................ 515 Overloading di un operatore ........................................................................ 515 Effettuare l’overloading ................................................................................... Overloading degli operatori binari di base ...................................................... Overloading degli operatori unari di base ....................................................... Overloading degli operatori relazionali e logici .............................................. Overloading degli operatori logici .................................................................. Riepilogo degli operatori soggetti a overloading ............................................ 519 520 522 527 530 533 Domande e risposte ........................................................................................ 534 Verifica ................................................................................................................ 534 Quiz ................................................................................................................. 534 Esercizi ............................................................................................................ 535 Sommario xvii Giorno 21 - Un giorno dedicato alla riflessione e agli attributi ..............................537 Riflessione (reflection) .................................................................................... 537 Attributi .............................................................................................................. 542 Che cosa sono gli attributi? ............................................................................. Utilizzo degli attributi ...................................................................................... Utilizzo di attributi multipli ............................................................................. Utilizzo degli attributi che hanno dei parametri ............................................. Definire i propri attributi ................................................................................ Definizione della classe Attribute .................................................................... Assemblaggio finale ......................................................................................... Confronto tra gli attributi a uso singolo e gli attributi a uso multiplo ............. 542 543 544 544 545 546 551 553 Congratulazioni! ............................................................................................... 554 Domande e risposte ........................................................................................ 554 Verifica ................................................................................................................ 555 Quiz ................................................................................................................. 555 Esercizi ............................................................................................................ 555 Settimana III - In riepilogo Applicate quello che avete appreso ............................................................. 557 Appendice A - Soluzioni .......................................559 Giorno 1 ............................................................................................................ 559 Quiz ..................................................................................................................559 Esercizi .............................................................................................................560 Giorno 2 ............................................................................................................ 561 Quiz ..................................................................................................................561 Esercizi .............................................................................................................562 Giorno 3 ............................................................................................................ 563 Quiz ..................................................................................................................563 Esercizi .............................................................................................................564 Giorno 4 ............................................................................................................ 565 Quiz ..................................................................................................................565 Esercizi .............................................................................................................566 xviii C# Giorno 5 ............................................................................................................ 567 Quiz ..................................................................................................................567 Esercizi .............................................................................................................568 Giorno 6 ............................................................................................................ 572 Quiz ..................................................................................................................572 Esercizi .............................................................................................................573 Giorno 7 ............................................................................................................ 576 Quiz ..................................................................................................................576 Esercizi .............................................................................................................578 Giorno 8 ............................................................................................................ 581 Quiz ..................................................................................................................581 Esercizi .............................................................................................................582 Giorno 9 ............................................................................................................ 587 Quiz ..................................................................................................................587 Esercizi .............................................................................................................588 Giorno 10 .......................................................................................................... 591 Quiz ..................................................................................................................591 Esercizi .............................................................................................................592 Giorno 11 .......................................................................................................... 594 Quiz ..................................................................................................................594 Esercizi .............................................................................................................595 Giorno 12 .......................................................................................................... 596 Quiz ..................................................................................................................596 Esercizi .............................................................................................................597 Giorno 13 .......................................................................................................... 599 Quiz ..................................................................................................................599 Esercizi .............................................................................................................600 Giorno 14 .......................................................................................................... 602 Quiz ..................................................................................................................602 Esercizi .............................................................................................................603 Giorno 15 .......................................................................................................... 609 Quiz ..................................................................................................................609 Esercizi .............................................................................................................610 Giorno 16 .......................................................................................................... 613 Quiz ..................................................................................................................613 Esercizi .............................................................................................................614 Sommario xix Giorno 17 .......................................................................................................... 617 Quiz ..................................................................................................................617 Esercizi .............................................................................................................618 Giorno 18 .......................................................................................................... 621 Quiz ..................................................................................................................621 Esercizi .............................................................................................................622 Giorno 19 .......................................................................................................... 623 Quiz ..................................................................................................................623 Esercizi .............................................................................................................624 Giorno 20 .......................................................................................................... 626 Quiz ..................................................................................................................626 Esercizi .............................................................................................................627 Giorno 21 .......................................................................................................... 632 Quiz ..................................................................................................................632 Esercizi .............................................................................................................633 Indice analitico ......................................................639 Introduzione C# Guida completa è pensato per fornirvi un’introduzione a C# e vi permetterà di iniziare a programmare applicazioni reali nel più breve tempo possibile. Se, però, vi aspettate di imparare C# solo leggendo, resterete delusi: infatti, dovrete anche inserire il codice, eseguire i quiz e svolgere gli esercizi. I quiz e gli esercizi sono stati formulati per aiutarvi a consolidare la comprensione dei temi trattati in un determinato giorno. Dopo aver letto una lezione, dovreste essere in grado di rispondere a tutte le domande del quiz; in caso contrario, dovrete rivedere parte di quella lezione. Gli esercizi, poi, vi offrono la possibilità di applicare ciò che avete appreso. Le risposte ai quiz e alla maggior parte degli esercizi sono fornite nell’Appendice A. Però provate a trovare le risposte da soli, prima di passare all’appendice! Il paragrafo “Domande e risposte”, alla fine di ogni giorno, propone alcune domande che potrebbero sorgere durante la lettura della lezione e fornisce le relative risposte. Supposizioni e requisiti Si suppone che ognuno di voi possieda un compilatore C# e un ambiente di esecuzione .NET. Sebbene possiate leggere questo libro senza il loro ausilio, tuttavia avrete difficoltà a comprendere pienamente tutto. Si è supposto, inoltre, che siate dei programmatori principianti. Se possedete una preparazione minore o maggiore, imparerete comunque varie nozioni da questo libro; tuttavia, forse, in alcuni casi progredirete più lentamente del previsto. Questa guida non presuppone che stiate usando gli ambienti di sviluppo Visual C# o Visual Studio .NET; infatti, potete usare sia gli strumenti di Microsoft sia svariati altri mezzi. Il booksite Associato a questo libro, è stato realizzato un booksite, reperibile all’indirizzo http://www.apogeonline.com/libri/02010/allegati/, dove potete trovare versioni prelevabili di tutto il codice presentato, oltre a collegamenti e materiale xxii C# aggiuntivo utile per conoscere C#. Naturalmente, sarete in grado di utilizzare questo libro e svolgere gli esercizi senza mai visitare il sito, ma per alcuni esempi più lunghi può essere comodo prelevare i file direttamente dal Web. Convenzioni utilizzate in questo libro All’interno del libro sono presenti diverse convenzioni, che hanno lo scopo di evidenziare alcune particolari informazioni. Le note forniscono informazioni aggiuntive, che potete leggere immediatamente o solo in un secondo momento. I suggerimenti mettono in evidenza informazioni che possono rendere più efficace la programmazione C#. Questo simbolo concentra la vostra attenzione sui problemi o sugli effetti collaterali che si possono verificare in specifiche situazioni. Sì No Le caselle Sì/No mettono in evidenza le buone abitudini da adottare… … e le cattive abitudini da evitare. TERMINE L’icona Termine indica i punti in cui viene utilizzata e definita una nuova terminologia, evidenziata con un carattere corsivo. ANALISI L’icona Analisi evidenzia le parti in cui si analizzano gli esempi di codice. Il codice è presentato utilizzando un carattere monospazio. Alla fine di ogni listato viene riportato, in vari casi, il relativo output.