Proprietà implementate automaticamente (Guida per programmatori C#)

In C# 3.0 e versioni successive le proprietà implementate automaticamente rendono più concisa la dichiarazione di proprietà quando non è necessaria logica aggiuntiva nelle funzioni di accesso alla proprietà. Queste proprietà consentono inoltre la creazione di oggetti da parte del codice client. Quando si dichiara una proprietà come illustrato nell'esempio seguente, il compilatore crea un campo sottostante privato e anonimo a cui è possibile accedere soltanto tramite le funzioni di accesso get e set della proprietà.

Esempio

Nell'esempio seguente viene illustrata una classe semplice che ha alcune proprietà implementate automaticamente:


// This class is mutable. Its data can be modified from
// outside the class.
class Customer
{
    // Auto-Impl 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()
    {
        // Intialize a new object.
        Customer cust1 = new Customer ( 4987.63, "Northwind",90108 );

        //Modify a property
        cust1.TotalPurchases += 499.99;
    }
}

La classe illustrata nell'esempio precedente è modificabile. I valori negli oggetti possono essere modificati dal codice client dopo la creazione. Nelle classi complesse che contengono comportamento (metodi) e dati significativi è spesso necessario disporre di proprietà pubbliche. Nel caso di struct o classi di piccole dimensioni che incapsulano solo un set di valori (dati) e includono una quantità ridotta o nulla di comportamento, è consigliabile rendere gli oggetti non modificabili dichiarando la funzione di accesso set come privata. Per ulteriori informazioni, vedere Procedura: implementare una classe leggera con proprietà implementate automaticamente (Guida per programmatori C#).

È possibile specificare attributi sulle proprietà implementate automaticamente, ma ovviamente non sui campi sottostanti, non essendo questi accessibili dal codice sorgente. Se è necessario utilizzare un attributo nel campo sottostante di una proprietà, creare una proprietà normale.

Vedere anche

Riferimenti

Proprietà (Guida per programmatori C#)

Modificatori (Riferimenti per C#)