Introduzione a C#
C#: di che si tratta? C# è Un linguaggio object -oriented “semplice”, moderno, general-purpose E’ un linguaggio robusto, ad alta produttività: Check di tipi e dimensioni array, controlli inizializzazione variabili, portabilità codice sorgente, garbage collection automatica Usato nella creazione di componenti software (si usa dire che C# è un linguaggio component-orientedsmo JIT)
Facile da imparare per programmatori aventi familiarità con C++,Java (come Java afferisce alla famiglia C/C++) Utilizzabile anche in ambito embedded Ottime performances (grazie al peculiare meccansimo meccanismo di compilazione ed esecuzione – JIT)
Sviluppato da Microsoft come risposta a Java Prima release nel 2000 Il nome del linguaggio è stato ispirato dalla nota musicale C# (C diesis) Nell’idea dei suoi ideatori doveva esser un passo sopra C,C++ e Java Principali sviluppatori: Anders Hejlsberg, Scott Wiltamuth C# standardizzato via ECMA( organizzazione internazionale, privata, non-profit per la standardizzazione dei sistemi informativi e di comunicazione) ed ISO (International Organization for Standardization) Microsoft detiene comunque il controllo dell’architettura
Principali caratteristiche Unified Object System Qualsiasi tipo è un oggetto, anche i cosiddetti tipi primitivi(tipi base) Meccanismo di ereditarietà singola Uso di interfacce Overloading operatori Structs “Tipi” leggeri (ed efficienti) Delegates Simili ai puntatori a funzione del C++ Direttive di pre-processore
C# ed il .NET framework Il compilatore C# produce codice intermedio MSIL Codice e risorse (es. bitmap) formano uno o più Assembly Assembly e manifest possono risiedere in .exe o .dll Il programma C# può utilizzare la Class Library che è messa a disposizione dal CLR Il CLR carica il codice MSIL e ne traduce le parti da eseguire in linguaggio macchina, compilandole con il JIT
Obiettivi di C# Obiettivi del C#? Fornire agli sviluppatori un unico linguaggio con: Un insieme completo di funzionalità Una sintassi semplice e consistente Aumentare la produttività eliminando problematiche tipiche Type Safety Ancora più rigido del C++ nella conversione fra tipi Non sono consentite variabili non inizializzate Garbage collection (rilascio automatico di memoria) Gestione errori mediante eccezioni Supporto per programmazione “component-oriented” Proprietà, eventi, interfacce, attributi Tipi unificati ed estensibili
Vantaggi Include caratteristiche di vari linguaggi La sicurezza di Java Completamente object oriented, Garbage collection,controllo dei limiti degli array a run-time, gestione eccezioni Semplicità Potenza ed espressività del C++ Enums, overloading di operatori, puntatori a funzione(sotto forma di delegates),Structs, passaggio dei parametri per riferimento o valore, manipolazione diretta della memoria con puntatori Tutti i vantaggi del .NET framework Class Library con un vasto insieme di funzionalità già pronte Compilazione JIT