Automaticky implementované vlastnosti (Průvodce programováním v C#)Auto-Implemented Properties (C# Programming Guide)

V jazyce C# 3.0 nebo novější automaticky implementované vlastnosti deklarace vlastnosti přesnější při provést žádné další logiku navíc je nutné v přístupových objektech vlastnosti.In C# 3.0 and later, auto-implemented properties make property-declaration more concise when no additional logic is required in the property accessors. Umožňují také kód klienta k vytváření objektů.They also enable client code to create objects. Když je deklarovat vlastnost, jak je znázorněno v následujícím příkladu, kompilátor vytvoří privátní, anonymní základní pole, které je přístupné pouze prostřednictvím vlastnosti get a set přistupující objekty.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.

PříkladExample

Následující příklad ukazuje jednoduchý třídy, která má některé automaticky implementované vlastnosti: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-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;
    }
}

V jazyce C# 6 nebo novější bude možné inicializovat automaticky implementované vlastnosti podobně jako na pole:In C# 6 and later, you can initialize auto-implemented properties similarly to fields:

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

Třída, která se zobrazí v předchozím příkladu je měnitelný.The class that is shown in the previous example is mutable. Kód klienta můžete změnit hodnoty v objektech po jejich vytvoření.Client code can change the values in objects after they are created. V komplexní tříd, které obsahují důležité chování (metody) a také data je často potřeba mít veřejné vlastnosti.In complex classes that contain significant behavior (methods) as well as data, it is often necessary to have public properties. Ale pro malé třídy nebo struktury, které právě zapouzdření sadu hodnot (data) a nemají žádné nebo téměř žádné chování, buď měli objekty neměnné deklarováním přistupující objekt set jako privátní (neměnné k příjemce), nebo deklarování pouze přistupující (neměnné everywhere kromě konstruktoru).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). Další informace najdete v tématu postupy: implementace třídy Lightweight vlastnostmi Auto-Implemented.For more information, see How to: Implement a Lightweight Class with Auto-Implemented Properties.

Atributy jsou povoleny na automaticky implementované vlastnosti ale samozřejmě není na pole Základní od těch, které nejsou přístupné z vašeho zdrojového kódu.Attributes are permitted on auto-implemented properties but obviously not on the backing fields since those are not accessible from your source code. Pokud je třeba použít atribut na pole základní vlastnosti, stačí vytvořte regulární vlastnost.If you must use an attribute on the backing field of a property, just create a regular property.

Viz takéSee Also

VlastnostiProperties
ModifikátoryModifiers