Michael Ferrari
C#
Le basi per tutti
2014 Area 51 s.r.l., San Lazzaro di Savena (Bologna)
Prima edizione ebook Area51 Publishing: aprile 2014
Curatore della collana: Mirco Baragiani
Cover: Valerio Monego
Redazione e sviluppo ebook: Enrico De Benedictis
Se intendi condividere questo ebook con unaltra persona, ti chiediamo cortesemente di scaricare una copia a pagamento per ciascuna delle persone a cui lo vuoi destinare. Se stai leggendo questo ebook e non lo hai acquistato, ti chiediamo, se ti piace, di acquistarne anche una copia a pagamento, al fine di poterci permettere di far crescere il nostro lavoro e di offrirti sempre pi titoli e una qualit sempre maggiore. Grazie per il tuo aiuto e per aver rispettato il lavoro dellautore e delleditore di questo libro.
Data la rapidit con cui i tool di sviluppo e i linguaggi vengono aggiornati, i contenuti di questo ebook si intendono fedeli allo stato dellarte al momento della pubblicazione.
Segui Area51 Publishing su:
Google Plus
Facebook
Twitter
Pinterest www.area51editore.com www.area51editore.com/blog
Introduzione
Il linguaggio C# nasce ufficialmente nel 2001 a opera dellingegnere danese Anders Hejlsberg, capo di un team di sviluppo Microsoft allinterno del progetto (dot).NET. Il linguaggio, orientato agli oggetti, nato con lo scopo di prendere il meglio dai linguaggi a oggetti allepoca in voga ovvero: C++, Java e Delphi.
Il risultato di questo lavoro ha portato alla realizzazione di un linguaggio pi compatto e leggibile rispetto al C++ ma con meno elementi verbosi di sintassi rispetto al linguaggio Java.
Tutti i cardini del progetto .NET di Microsoft sono incapsulati allinterno del linguaggio C# che di fatto nato come la piattaforma preferenziale nello sviluppo di applicazioni per il Framework .NET ed quindi semplice e immediato trovare una correlazione puntuale tra astrazioni, classi, interfacce, delegati ed eccezioni nel linguaggio in fatto di gestione del framework.
Il linguaggio C#, a differenza dei suoi cugini, allo stesso tempo un linguaggio interpretato e compilato e queste due caratteristiche possono essere delegate a due distinte fasi senza avere compromessi in termini di resa finale. Durante la fase di testing la macchina virtuale presenter tutte le caratteristiche del codice e solo in un secondo tempo si potr decidere se compilare il codice e quindi rilasciare il software sotto forma di pacchetto nativo binario.
Caratteristiche del linguaggio
Queste sono in riassunto tutte le caratteristiche che rendono C# un linguaggio unico nel suo genere (alcune saranno ampliamente approfondite in questo ebook):
- Abbraccia vari paradigmi di programmazione, come la maggior parte dei nuovi linguaggi. Certamente laspetto object oriented quello pi utilizzato, ma si pu usare C# anche per programmare usando lapproccio funzionale. Tutto questo grazie appunto allevoluzione avutasi nel tempo che ha notevolmente arricchito il linguaggio di costrutti ed espressivit. Anche i paradigmi riflessivo e concorrente sono supportati.
- Nasce come linguaggio a tipizzazione statica, ovvero una variabile nasce e muore rimanendo sempre dello stesso tipo. Tuttavia, a partire dalla versione 4.0, grazie allintroduzione del DLR possibile anche dichiarare una variabile in maniera dinamica, aumentando ancora di pi la duttilit del linguaggio. Nel caso in cui si scelga la tipizzazione statica essa anche forte, ovvero sono permesse su di esse solo operazioni legali e sicura, quindi non ammette pericolose conversioni implicite che possono portare a perdita di informazione. Grazie alla sua nuova natura dinamica C# ammette ora anche una parziale inferenza di tipo.
- Nellambito della programmazione a oggetti permette solo lereditariet singola da classi ma possibile ereditare da quante interfacce si vuole. Se siete dei fan dellereditariet multipla, con C# rimarrete delusi. Ovviamente questo non preclude nulla in termini di potenzialit ed espressivit del linguaggio e daltronde innegabile che lereditariet singola sia lapproccio a oggi di maggior successo.
- Offre un valido supporto per linternazionalizzazione.
- Supporta nativamente la generazione di documentazione XML e anche scrittura di servizi Web XML Based.
- Pu facilmente cooperare con altri linguaggi .Net compliant, un concetto pilastro per .Net.
- Tramite il progetto Mono gira anche su piattaforme Linux e Mac.
- Tramite leccellente suite Xamarin pu essere adoperato anche per creare applicazioni Android.
- Dispone pienamente di tutte le features proprie di .Net, quindi un efficiente meccanismo di garbage collection, gestione delle eccezioni avanzata, dalla versione 4.0 in avanti possibile usare anche il design by contract e sfruttare le CPU multi core.
Differenze con Java Sebbene C# sia ritenuto simile a Java, esistono alcune importanti differenze fra i due linguaggi. Quella maggiormente visibile certamente la presenza in C# di molti costrutti (alcuni sono reminiscenze del C++) che in Java sono stati deliberatamente vietati. I sostenitori del C# affermano che essi rendono il codice pi chiaro; i sostenitori del Java affermano che proprio la presenza di un gran numero di parole-chiave e di regole da ricordare rende il linguaggio pi difficile da imparare. Quello che in Java chiamato package, in C# viene chiamato namespace o spazio di nomi. Un ulteriore livello di organizzazione in C# costituito dagli assembly, che possono contenere al proprio interno diversi spazi di nomi.
Capitolo 1
Variabili e tipi di dato
Le somiglianze con Java si notano anche quando si parla di variabili. La dichiarazione e linizializzazione sono infatti le stesse. Unaltra somiglianza importante luso del punto e virgola ; che ha la stessa funzione come in Java.
Tra le differenze pi importanti spiccano i tipi di dato. In C#, infatti, ogni tipo presente in Java acquisisce alcune varianti che per non sono molto utilizzate e quindi al momento non indispensabili. Se sei curioso puoi visitare il sito: http://msdn.microsoft.com/it-it/library/ms228360(v=vs.90).aspx
C# un linguaggio type-safe. Tutte le variabili devono essere dichiarate, e occorre specificarne il tipo.
Abbiamo due tipi di variabili: valore e riferimento .
Quando una variabile contiene un tipo valore, contiene direttamente un oggetto con il valore. Quando una variabile contiene un tipo riferimento, in realt contiene un qualcosa che si riferisce a un oggetto. In questo caso una seconda variabile pu contenere lo stesso riferimento.
Tipi valore
Vediamo i tipi valore predefiniti in C# e i corrispondenti tipi di sistema nel framework .Net.
Tipo | Valori ammissibili |
sbyte | da -128 a 127 |
short | da -32768 a 32767 |
int | da -2147483648 a 2147483647 |
long | da -9223372036854775808 a 9223372036854775807 |
byte | da 0 a 255 |
ushort | da 0 a 65535 |
uint | da 0 a 4294967295 |
ulong | da 0 a 18446744073709551615 |
float | da 1.5 x 10-45 a 3.4 x 1038 con 7 cifre significative |
Next page