Proprietà implementate automaticamente (Guida per programmatori C#)Auto-Implemented Properties (C# Programming Guide)

In C# 3.0 e versioni successive, le proprietà implementate automaticamente rendono più concisa la dichiarazione di proprietà quando nelle funzioni di accesso della proprietà non è necessaria alcuna logica aggiuntiva.In C# 3.0 and later, auto-implemented properties make property-declaration more concise when no additional logic is required in the property accessors. Consentono inoltre al codice client di creare oggetti.They also enable client code to create objects. 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à.When you declare a property as shown in the following example, the compiler creates a private, anonymous backing field that can only be accessed through the property's get and set accessors.

EsempioExample

L'esempio seguente mostra una classe semplice con alcune proprietà implementate automaticamente:The following example shows a simple class that has some auto-implemented properties:

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

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

In C# 6 e versioni successive, è possibile inizializzare le proprietà implementate automaticamente in modo simile ai campi:In C# 6 and later, you can initialize auto-implemented properties similarly to fields:

public string FirstName { get; set; } = "Jane";  

La classe mostrata nell'esempio precedente è modificabile.The class that is shown in the previous example is mutable. Il codice client può modificare i valori negli oggetti dopo che sono stati creati.Client code can change the values in objects after they are created. Nelle classi complesse che contengono un comportamento significativo (metodi) oltre ai dati, spesso è necessario disporre di proprietà pubbliche.In complex classes that contain significant behavior (methods) as well as data, it is often necessary to have public properties. Tuttavia, per le classi o gli struct di piccole dimensioni che incapsulano solo un set di valori (dati) e non hanno comportamenti oppure hanno comportamenti limitati, è consigliabile rendere gli oggetti non modificabili dichiarando la funzione di accesso set come private (non modificabile dai consumer) o dichiarando solo una funzione di accesso get (non modificabile, tranne che nel costruttore).However, for small classes or structs that just encapsulate a set of values (data) and have little or no behaviors, you should either make the objects immutable by declaring the set accessor as private (immutable to consumers) or by declaring only a get accessor (immutable everywhere except the constructor). Per altre informazioni, vedere Procedura: Implementare una classe leggera con proprietà implementate automaticamente.For more information, see How to: Implement a Lightweight Class with Auto-Implemented Properties.

Vedere ancheSee also