This article has been localized into Italian by the community.
Campi
Uno dei più basici mattoni della classe è il field. È proprio come una variabile, di cui abbiamo già parlato precedentemente, ma definita su livello di classe invece di metodo. La differenza è abbastanza importante e a che vedere con il concetto di scope, il quale decide da dove quella variabile può essere acceduta: una variabile locale (definita in un metodo) può essere acceduta solamente dallo specifico metodo, mentre il field di una classe può essere acceduta da tutti i metodi di una classe e se la visibilità lo permette, perfino dai metodi di una'altra classe.
In altre parole, la differenza tra una variabile e un field è praticamente dove viene dichiarata. Una variabile al livello di classe viene definita field, mentre una variabile a livello di metodo viene generalmente definita variabile.
I field sono spesso dichiarati in cima nella classe e la loro visibilità è spesso impostata su privata (discuteremo la visibilità più avanti in questo capitolo). Apparirebbe così:
public class FieldsSample
{
private string name;
....
Ora abbiamo una variabile a livello di classe chiamata "name", a cui è possibile accedere da tutti i metodi di questa classe. Non è possibile accedervi dall'esterno della classe,solo perché l'abbiamo dichiarato come private. Sei libero di dichiarare i tuoi campi protected se volessi accedervi da classi derivate o anche public se volessi accedervi da qualsiasi luogo , ma tieni presente che il modo consigliato di accedere ai campi al di fuori di una classe è attraverso le proprietà, di cui parleremo nel prossimo articolo.
Nel nostro esempio qui sopra, ovvero, la variabile "name" non ha un valore iniziale, il che significa che dovrai assegnargli qualcosa prima di poterla usare. Se già dovessi sapere il valore con cui devi inizializzare il tuo field, lo si può facilmente assegnare al momento della dichiarazione:
public class FieldsSample
{
private string name = "John Doe";
....
In alternativa, è possibile assegnare un valore al field nel costruttore della classe. Ciò sovrascriverà qualsiasi valore assegnato al field nel punto di dichiarazione e ti permetterà di assegnare valori dinamici.
Come già detto in precedenza, è possibile accedere ai membri di una classe con la notazione a punti, come "class.member". Tuttavia, quando accediamo a un membro della classe corrente, utilizziamo la parola chiave "this", come "this.member". Ecco un esempio più completo in cui dichiariamo un paio di field e li usiamo all'interno di un metodo:
public class Fields1
{
private string name = "John Doe";
private int age = 42;
public void Describe()
{
string description = this.name + " is " + this.age + " years old...";
Console.WriteLine(description);
}
}
Nel metodo Describe () (e non preoccuparti, arriveremo ai metodi in uno dei prossimi articoli) dichiariamo una variabile locale chiamata "description", con un valore basato sui nostri due field dichiarati. La variabile "description" è un ottimo esempio di variabile che dovrebbe essere sempre una variabile e mai un campo: è temporanea e rilevante solo per il metodo che la utilizza, ove i field sarebbero facilmente rilevanti in altri metodi della classe.
Sommario
I field funzionano un po' come le variabili globali perché possono essere utilizzati per archiviare dati a cui è possibile accedere da qualsiasi punto all'interno della classe. È possibile accedervi anche dall'esterno della classe dichiarante, ma normalmente vengono utilizzate le proprietà per questo scopo. Parleremo di proprietà nel prossimo articolo.