Proprietà (Guida per programmatori C#)
Aggiornamento: novembre 2007
Le proprietà sono membri che offrono un meccanismo flessibile per la lettura, la scrittura o il calcolo dei valori dei campi privati. Possono essere utilizzate come se fossero membri dati pubblici, ma sono in realtà metodi speciali denominati funzioni di accesso. In questo modo, è possibile accedere facilmente ai dati e al tempo stesso promuovere la sicurezza e la flessibilità dei metodi.
In questo esempio, nella classe TimePeriod viene memorizzato un periodo di tempo. Internamente, il periodo viene memorizzato in secondi. Tuttavia, una proprietà denominata Hours consente a un client di specificare il tempo in ore. Le funzioni di accesso della proprietà Hours consentono di eseguire la conversione da ore a secondi e viceversa.
Esempio
class TimePeriod
{
private double seconds;
public double Hours
{
get { return seconds / 3600; }
set { seconds = value * 3600; }
}
}
class Program
{
static void Main()
{
TimePeriod t = new TimePeriod();
// Assigning the Hours property causes the 'set' accessor to be called.
t.Hours = 24;
// Evaluating the Hours property causes the 'get' accessor to be called.
System.Console.WriteLine("Time in hours: " + t.Hours);
}
}
// Output: Time in hours: 24
Cenni preliminari sulle proprietà
Le proprietà consentono a una classe di esporre un modo pubblico per ottenere e impostare valori, nascondendo tuttavia il codice di implementazione o di verifica.
La funzione di accesso get della proprietà viene utilizzata per restituire il valore della proprietà, mentre la funzione di accesso set viene utilizzata per assegnare un nuovo valore. A queste funzioni di accesso è possibile assegnare livelli di accesso differenti. Per ulteriori informazioni, vedere Accessibilità asimmetrica delle funzioni di accesso (Guida per programmatori C#).
La parola chiave value viene utilizzata per definire il valore assegnato dall'indicizzatore set.
Le proprietà che non implementano un metodo set sono in sola lettura.
Per proprietà semplici che non richiedono codice di funzione di accesso personalizzato, è opportuno considerare la possibilità di utilizzare proprietà implementate automaticamente. Per ulteriori informazioni, vedere Proprietà implementate automaticamente (Guida per programmatori C#).
Sezioni correlate
Confronto tra proprietà e indicizzatori (Guida per programmatori C#)
Accessibilità asimmetrica delle funzioni di accesso (Guida per programmatori C#)
Proprietà implementate automaticamente (Guida per programmatori C#)
Specifiche del linguaggio C#
Per ulteriori informazioni, vedere le seguenti sezioni in Specifiche del linguaggio C#:
1.6.7.2 Proprietà
10.2.9.1 Nomi dei membri riservati per le proprietà
10.7 Proprietà