Introduzione a.net con C#
Introduzionea C# C# : CLR = Java : JVM C# è illinguaggiodiriferimentodi.net C# è molto simile a java e C++(80%) Nome del file puòesserediversodahello Main<> main, Case sensitive NameSpace(=package java)
C# fondamenti Derivano da Object Namespace per organizzare le classi Equivalenti ai package java Data model e Type System Value types (primitivi,enumeration,struct) Reference type (class,interface,array,delegate) Pointers type (ad alcuni tipi) Execution model Front-end compilation (simile al bytecode) Back-end compilation (Just In Time, JIT)
C# fondamenti Eccezioni Interfacce Threads Gargagecollection Reflection Dynamic loading Properties Events e delegates Operator overloading Boxing/Unboxing..
Array
Array
Array associativi
Boxing/Unboxing
Boxing/Unboxing
Nuovitipi in C# (4.0) Tuple Typed immutable generics in grado di memorizzare fino ad 8 oggetti Per memorizzare un numero maggiore di oggetti bisogna concatenare piu tuple! Tipi Complex BigInteger
Object orientation: ereditarietà
Object orientation: Overriding
Object orientation: Overriding operatori
Passaggiodeiparametri Named argument, parametri opzionali
Propietà Sono particolari metodi che si comportano come un attributo, cioè possono essere solo letti o scritti.
Indexers Come le proprietàpiùun metodoper usarele istanze di una classe come un vettore
Delegate, eventi, controlli Delegate è un tipo puntatore ad un metodo Si definiscemediantela paroladelegate e la firma del metodo delegate void Jolly (String s); Firma del metodo
Delegate, eventi, controlli Per creare valori di un tipo delegate new DelegateType(obj.Method); Se objè omessosiintedethis Se objè ilnomediunaclasse, Method è un metodostatico Method deve avere firma compatibile Unavariabiledelegate memorizzasial oggetto(o classe), sia il metodo
Esempiodelegate
Esempiodelegate Multicast class Counter { private int value=0; public void add(int v){value+=v;} } delegate void Adder(int i); class Test { static void Main() { Counter c1 = new Counter(); Counter c2 = new Counter(); Adder add = new Adder(c1.add); add+=new Adder(c2.add); add(3); //chiama c1.add(3) e c2.add(3) } }
Delegate, eventi, controlli Gli eventi sono variabili delegate dichiarate come campi di una classee denotatimediantela parola event Un evento può essere attivato somalente da dentro la classe nella quale è definito Esempio Change Model notify notify View 1 View 2
Esempio
Esempio
Delegate, eventi, Control Controlli: usati nelle GUI ed in ASP.NET Un controllo rappresenta un oggetto grafico che ha un contenuto informativo I controlli sono visualizzati all interno di un form (o in una pagina web) Programmazione visuale(visualstudio 2010)
Eventie controlli Glieventi(SW) sonogeneratia seguitodi eventi fisici(p.e., click del mouse) Tuttiglieventisonoraccoltidaun motore e consegnatiad Event handler delleapplicazioni. Glihandler devonoregistrarsiper ricevere gli eventi Eventi generati Controllo System s event Engine Attivazione di metodi(handler) Handler
Esempio
Namespace e Assembly Namespace serve per controllare la visibilità di nomi a tempo di compilazione Assembly è un componenteswcon propria indentità che può essere caricato a run-time Un assembly può contenere più namespace
Namespace c# vspackage java file: B.java package A; class B { } file: B.java package A; class C { } file: Test.cs namespace A; class B { } class C { } A Samples B.class MyLib.dll C.class Package = directory nome classe = file.class Namespace <> directory Nome file indipendente da nome classe piùclassinellostessonamespace vanno nello stesso file
Assembly Namespace A Namespace B file A.cs file B.cs namespace A { class C1 { } class C2 { } } namespace A { class C2 { } } namespace B { class C4 { } class C5 { } } namespace B { class C6 { } } file D.cs file E.cs cscb.cse.cs assembly Assembly e namespace sono due concetti ortogonali
.NET Framework Un run-time (middleware) per l esecuzione di applicazioni desktop e distribuite Insieme di tool di sviluppo e librerie Connessionia db GUI Pagineweb dinamiche LibrerieSpecializzateper un tipo di applicazione LibrerieSW dibase language independent.. Basato su macchina virtuale Garbage Collection, Security,Inteoperability,.. Just in time compilation
Versionidi.NET.NET 3.0: ulteriorerun-time e librerie Windows Presentation Fund. Creazione GUI, rimpiazza WinForm Nuovo linguaggio: xaml Windows Communication Fund. Scambio messaggi fra applicazioni Worklow Fundation ApplicazioniWorkflow Card Space Gestione identità digitale di utenti
Versionidi.NET LINQ (Language-Integrated Query) set di funzionalità introdotto in che migliorala gestione delle querynella sintassi dei linguaggi C#e VisualBasic. Entity Framework ObjectOrientedMappingdei di database
Interoperabilità Source Code C# Front-end compilers Visual Basic Common Intermediate Language (CIL) Visual C++ Stack-based assembly language machine Back-end compilers (JIT Compilation) Common Language Runtime (CLR) Windows Linux MacOs
Just in Time compilation
HelloNS.vb Esempio Main.cs vbc/target:library Hello.vb csc/r:hellotns.dll Main.cs HelloNS.dll ---- ---- Main.exe ---- ----
Base Class Library (BCL) System.Collections System.Diagnostics System.Globalization System.IO System.Net System.Reflection System.Runtime System.Security System.Text System.Threading.. Contiene: lists, queues, stacks, hashtables, dictionaries.. Funzioniper diagnostica: eventlogging, performance counters, Formato data, monete, numeri, etc. Legge/scriveStream, connessioneal file system Interfacceaiprotocollidirete, HTTP, FTP,SMTP,SSL,.. Proprietà degli oggetti a run time GestionedelCLR Servizi di crittografia,.. Espressioni regolari Gestione thread
Esempio
Visual studio 2010 https://www.dreamspark.com/
Mono
Bibliografiae risorse.net Application Development, Hanspeter Mössenböck, Wolfgang Beer, Dietrich Birngruber, Albrecht Wöß Pearson/Addison Wesley http://channel9.msdn.com/