Proprietà implementate automaticamente (Guida per programmatori C#)
Le proprietà implementate automaticamente rendono la dichiarazione di proprietà più concisa quando non è necessaria alcuna logica aggiuntiva nelle funzioni di accesso alle proprietà. Consentono inoltre al codice client di creare oggetti. Quando si dichiara una proprietà come mostrato nel seguente esempio, il compilatore crea un campo sottostante privato anonimo accessibile solo tramite le funzioni di accesso get
e set
della proprietà. init
le funzioni di accesso possono anche essere dichiarate come proprietà implementate automaticamente.
Esempio
L'esempio seguente mostra una classe semplice con alcune proprietà implementate automaticamente:
// This class is mutable. Its data can be modified from
// outside the class.
public class Customer
{
// Auto-implemented properties for trivial get and set
public double TotalPurchases { get; set; }
public string Name { get; set; }
public int CustomerId { get; set; }
// Constructor
public Customer(double purchases, string name, int id)
{
TotalPurchases = purchases;
Name = name;
CustomerId = id;
}
// Methods
public string GetContactInfo() { return "ContactInfo"; }
public string GetTransactionHistory() { return "History"; }
// .. Additional methods, events, etc.
}
class Program
{
static void Main()
{
// Initialize a new object.
Customer cust1 = new Customer(4987.63, "Northwind", 90108);
// Modify a property.
cust1.TotalPurchases += 499.99;
}
}
Non è possibile dichiarare le proprietà implementate automaticamente nelle interfacce. Le proprietà implementate automaticamente dichiarano un campo sottostante di un'istanza privata e le interfacce potrebbero non dichiarare campi di istanza. La dichiarazione di una proprietà in un'interfaccia senza definire un corpo dichiara una proprietà con funzioni di accesso che devono essere implementate da ogni tipo che implementa tale interfaccia.
È possibile inizializzare le proprietà implementate automaticamente in modo analogo ai campi:
public string FirstName { get; set; } = "Jane";
La classe mostrata nell'esempio precedente è modificabile. Il codice client può modificare i valori negli oggetti dopo la creazione. Nelle classi complesse che contengono un comportamento significativo (metodi) e dati, è spesso necessario avere proprietà pubbliche. Tuttavia, per classi o struct di piccole dimensioni che incapsulano semplicemente un set di valori (dati) e presentano comportamenti minimi o nulli, è consigliabile usare una delle opzioni seguenti per rendere gli oggetti non modificabili:
- Dichiarare solo una
get
funzione di accesso (non modificabile ovunque tranne il costruttore). - Dichiarare una
get
funzione di accesso e unainit
funzione di accesso (non modificabile ovunque tranne durante la costruzione di oggetti). - Dichiarare la
set
funzione di accesso come privata (non modificabile ai consumer).
Per altre informazioni, vedere Come implementare una classe leggera con proprietà implementate automaticamente.
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per