Sintassi base e struttura di un programma
Struttura di un programma Un programma C# è composta da uno o più file (*.cs) Ogni file contiene uno o più namespace Namespace Contiene tipi e/o altri namespace Definisce lo scope dei tipi che contiene Permette di raggruppare il codice secondo criteri semantici Tipi Class, Struct, Interface, Enum,Delegate
Sintassi Sintassi Simile al C/C++ Case sensitive Punto e virgola “;” per terminare righe logiche Parentesi graffe {} per racchiudere blocchi di codice Commenti in stile C++, Java // commento di una linea /* commento di una o più linee */ Codifica UNICODE Sia per il codice sorgente che per le stringhe ed i caratteri all’interno del programma Spazi bianchi privi di significato: sequenze di spazi, tab, interruzioni di linea
Variabili e Tipi Ogni variabile deve essere di un tipo dichiarato Possibli tipi: Tipi predefiniti (Es, int, char) Tipi definiti dall’utente (mediante class, struct) Sistema dei tipi unificato: tutto deriva dalla classe Object Inizializzaione di una variabile tipo nome_variabile [= espressione];
int s = 0; //inizializzazione, dichiarazione + assegnazione La variabili devono essere inizializzate o deve essergli assegnato un valore prima del loro primo utilizzo int s = 0; //inizializzazione, dichiarazione + assegnazione string nome; // dichiarazione senza assegnazione float miofloat = 0.5f; //inizializzazione, dichiarazione + assegnazione bool hotOrNot = true; //inizializzazione, dichiarazione + assegnazio Il valore delle costanti non può essere modificato const int variabileCostante= 32;
Tipi: value e reference types Netta distinzione fra Value types Contengono direttamente il valore del dato Non possono essere null (Eccezione Nullable Types) L’assegnazione di una variabile ad un’altra provoca la copia del valore contenuto nella variabile Reference Types Contengono un riferimento al valore del dato Possono essere null L’assegnazione di una variabile ad un’altra provoca la copia del riferimento al valore e non del valore stesso (entrambe le variabili fanno quindi riferimento allo stesso dato)
La distinzione tra Value Type e Reference Type è predefinita in base al tipo e non modificabile dal programmatore Value Type Allocati nello Stack (a meno che non siano membri di una classe) Non necessitano di Garbage Collection Reference Type Fanno riferimento a oggetti allocati dinamicamente nello heap Tali oggetto sono soggetti al Garbage Collection int i = 123; string s = "Hello world"; 123 i "Hello world" s
Tipi predefiniti