![]() |
Creato da MarcOvermars il 15/09/2008
appunti pubblici tratti da http://msdn.microsoft.com
|
Area personale
Tag
Cerca in questo Blog
Menu
Chi può scrivere sul blog
Consente di dichiarare una variabile locale o una costante, chiamare un
metodo, creare un oggetto o assegnare un valore a una variabile, una
proprietà o un campo.
Una serie di istruzioni inclusa tra parentesi graffe costituisce un
blocco di codice. Il corpo di un metodo rappresenta un esempio di
blocco di codice. I blocchi di codice seguono spesso un'istruzione di
controllo. Le variabili o le costanti dichiarate all'interno di un
blocco di codice sono disponibili solo per le istruzioni incluse nello
stesso blocco di codice.
ESPRESSIONI
Un'espressione è un frammento di codice che può restituire un singolo
valore, oggetto, metodo o spazio dei nomi. Le espressioni possono
contenere un valore letterale, una chiamata di metodo, un operatore e i
relativi operandi oppure un nome semplice, ad esempio il nome di una variabile, un membro di tipo, un parametro di metodo, uno spazio dei nomi o un tipo.
int i = 5;
string s = "Hello World";
OPERATORI
In C# un operatore è un termine o un simbolo che accetta come input una
o più espressioni, denominate operandi, e restituisce un valore. Gli
operatori che accettano un unico operando, ad esempio l'operatore di
incremento (++) o new, sono denominati operatori unari. Quelli che accettano
due operandi, ad esempio gli operatori aritmetici (+, -, *, /), sono denominati
operatori binari. L'operatore condizionale (?:) accetta tre operandi ed è l'unico
operatore ternario disponibile in C#.
y = 2 + 3;
OPERATORI DI CONVERSIONE
sono di 2 tipi , espliciti e impliciti
![]() |
Gli oggetti stringa sono non modificabili, ovvero non possono
essere modificati una volta creati. I metodi che intervengono sulle
stringhe in realtà restituiscono oggetti stringa nuovi.
Fare attenzione quando si creano riferimenti a stringhe. Se si crea un
riferimento a una stringa e quindi si "modifica" la stringa, il
riferimento continuerà a puntare all'oggetto originale e non
all'oggetto nuovo creato quando la stringa è stata modificata. Il
codice seguente illustra questo problema:
string s1 = "Hello";
string s2 = s1;
s1 += " and goodbye.";
Console.WriteLine(s2); //outputs "Hello"
caratteri speciali:
Simbolo @
Il simbolo @ indica al costruttore
della stringa di ignorare i caratteri di escape e le interruzioni di
riga.
![]() |
class TestArraysClass
{
static void Main()
{
// Declare a single-dimensional array
int[] array1 = new int[5];
// Declare and set array element values
int[] array2 = new int[] { 1, 3, 5, 7, 9 };
// Alternative syntax
int[] array3 = { 1, 2, 3, 4, 5, 6 };
// Declare a two dimensional array
int[,] multiDimensionalArray1 = new int[2, 3];
// Declare and set array element values
int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };
// Declare a jagged array
int[][] jaggedArray = new int[6][];
// Set the values of the first array in the jagged array structure
jaggedArray[0] = new int[4] { 1, 2, 3, 4 };
}
}
Di seguito sono riportate le caratteristiche delle matrici:
-
Una matrice può essere unidimensionale, multidimensionale o irregolare.
Il valore predefinito degli elementi numerici della matrice è impostato su
zero, mentre gli elementi di riferimento sono impostati su null.-
Gli elementi di una matrice irregolare sono tipi di riferimento inizializzati su null.
-
Le matrici sono a indice zero. Una matrice con n elementi viene indicizzata da 0 a n-1.
-
Gli elementi di una matrice possono essere di qualsiasi tipo, anche di tipo matrice.
-
I tipi matrice sono tipi di riferimento derivati dal tipo di base astratto Array. Poiché questo tipo implementa IEnumerable e IEnumerable, è possibile utilizzare l'iterazione foreach su tutte le matrici in C#
int[] numbers = { 1, 2, 3, 4, 5 };
int lengthOfNumbers = numbers.Length;
metodo per scorrere gli elementi :
int[,] numbers2D = new int[3, 2] { { 9, 99 }, { 3, 33 }, { 5, 55 } };
foreach (int i in numbers2D)
{
System.Console.Write("{0} ", i);
}
ultima considerazione, le matrici sono passate anche come parametri per
i metodi , per esempio nel Main
![]() |
Casting:
il Cast richiama espicitamente la conversione da un tipo ad un altro tipo
la conversione infatti può essere implicita:
int i = 10;
float f = 0;
f = i;
oppure esplicita utilizzando il Cast
double x = 1234.7;
int a;
a = (int)x;
System.Console.WriteLine(a);
Boxing e unboxing :
Consentono di gestire i tipi di valore come oggetti.
Il boxing di un tipo di valore consente di assemblarlo all'interno di
un'istanza del tipo di riferimento Object e quindi di archiviarlo nell'heap
sottoposto a Garbage Collection ( non è più possibile richiedere
esplicitamente di liberare la memoria utilizzata da un oggetto,
ovvero terminare tale oggetto in modo deterministico,ma si lascia
che il sistema esegua questa operazione automaticamente, nel momento
in cui lo riterrà più opportuno per migliorare le prestazioni complessive )
int i = 123;
object o = (object)i; // boxing
o = 123;
i = (int)o; // unboxing dalla classe object
Rispetto alle semplici assegnazioni, il boxing e l'unboxing sono
processi onerosi dal punto di vista del calcolo. Il boxing di un tipo
di valore comporta infatti l'allocazione e la costruzione di un oggetto
completamente nuovo. A un livello inferiore, anche il cast richiesto
per l'unboxing è oneroso dal punto di vista del calcolo.
![]() |
In un programma scritto in C# può esistere solo un punto di ingresso e quindi esiste solo un Main() per ogni programma dove vengono :
- creati oggetti
- richiamati altri metodi da altre classi
il metodo Main() può anche restituire un intero, o nulla come al solito col void
La restituzione di un valore integer consente tuttavia al programma di
inviare informazioni sullo stato ad altri programmi o script che
chiamano l'eseguibile
static void Main(string[] args)
static int Main(string[] args)
![]() |