C#, avanti tutta

30 marzo 2006

Dopo una veloce introduzione agli elementi base del linguaggio, vediamo quali sono i tipi offerti da C# ed infine analizziamo alcuni elementi specifici della programmazione orientata agli oggetti. Alcuni concetti di questa lezione potranno risultare un po’ ostici ai meno esperti, niente paura, anche ignorando questo capitolo sarà possibile andare avanti nella guida senza perdersi per la strada.

I tipi di C#
Uno dei vantaggi del framework .NET è l’interoperabilità tra i linguaggi: ad esempio posso scrivere una applicazione per metà in C# e per metà in Visual Basic. Questo ha come implicazione che il framework ha un sistema di tipi comune, anche se ogni linguaggio usa delle keywords diverse per esporre i tipi.
I tipi che abbiamo a disposizione in C# sono:

Tipo Dimensioni/Valori
bool true o false
byte Intero positivo tra 0 e 255
sbyte Intero tra -128 e 127
char Un qualsiasi carattere Unicode
DateTime E’ uno struct che rappresenta data e ora dalle 12:00:00 AM, 1/1/0001 alle 11:59:59 PM, 12/31/9999
decimal Valore positivo e negativo con 28 digit
double numero in virgola mobile a 64 bit
float numero in virgola mobile a 32 bit
int intero con segno a 32 bit (da -2.147.483.648 a 2.147.483.647)
uint intero senza segno a 32 bit
long intero con segno a 64 bit
ulong intero senza segno a 64 bit
object il tipo base da cui derivano tutti gli altri
short intero con segno a 16 bit
string una stringa di caratteri Unicode
TimeSpan Un periodo di tempo positivo o negativo

Suggeriamo di usare il tipo Decimal per calcoli finanziari e valutari. Attenzione, con C# è obbligatorio inizializzare le variabili prima dell’uso, se non lo si fa, il compilatore ci avvisa con un messaggio di errore.

Boxing e unboxing
Quando si esegue una conversione implicita di un tipo da e verso un tipo object si parla di boxing e unboxing. Se ad esempio scriviamo:

int nPino = 452;
object oPino = nPino;

Nella seconda riga abbiamo effettuato una operazione di boxing ossia il valore della variabile intera nPino stato copiato nell’oggetto oPino. Da ora in poi i due valori sono indipendenti l’uno dall’altro.

Se invece vogliamo fare l’operazione inversa, ossia convertire un tipo object in un tipo per valore, bisogna indicare esplicitamente il tipo da estrarre dall’oggetto:

int nPino2 = (int)oPino;

Classi, Metodi, Propietà
Esula dagli scopi della guida una trattazione teorica della programmazione orientata agli oggetti, che potrete trovare in altre guide. Vediamo quindi brevemente come si definisce una classe in C#:

public class xyz
{
// qui ci va l’implementazione
}

dove al posto dell’attributo public ci possiamo mettere protected, internal, private, abstract o sealed a seconda dell’accessibilità che vogliamo dare alla classe.

In C# non c’è distinzione tra funzioni e procedure o sub come in altri linguaggi, esistono solo i Metodi, che possono o meno restituire dati in uscita.

Ecco un esempio di metodo che accetta in ingresso due double e restituisce in uscita un double che è la somma dei precedenti:

public double Add(double nm1, double nm2)
{
return nm1 + nm2;
}

Anche in questo caso, al posto dell’attributo public ci possiamo mettere altri attributi che riguardano l’accessibilità del metodo o la possibilità di ridefinirlo in una classe derivata (virtual, override).

Un metodo che non restituisce un risultato viene invece dichiarato come tipo void:

public void FaiQualcosa()
{
}

Vediamo adesso un esempio su come dichiarare le proprietà in C# tramite gli accessori get e set:

public class IlMioPc 

    private int _ram1; 
    public int dimm1 
      { 
        get { return _ram1; } 
        set{ _ram1 = value; } 
      }
}

Se si implementano sia get sia set come nell’esempio, sarà possibile accedere alla proprietà sia in lettura sia in scrittura. Se invece se ne implementa solo una sarà consentita solo la lettura o solo la scrittura.

E’ anche possibile definire delle regole di convalida del valore per accettarlo solo se risponde a determinate caratteristiche.

Tutte le lezioni

1 ... 4 5 6 ... 12

Se vuoi aggiornamenti su C#, avanti tutta inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su C#, avanti tutta

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy