Megosztás a következőn keresztül:


Automatikusan implementált tulajdonságok (C# programozási útmutató)

Az automatikusan implementált tulajdonságok tömörebbé teszik a tulajdonságdeklarációt, ha nincs szükség további logikára a tulajdonság tartozékaiban. Emellett engedélyezik az ügyfélkódok létrehozását is. Amikor a következő példában látható módon deklarál egy tulajdonságot, a fordító létrehoz egy privát, névtelen háttérmezőt, amely csak a tulajdonság get és set a tartozékai segítségével érhető el. init a tartozékok automatikusan implementált tulajdonságokként is deklarálhatók.

Példa

Az alábbi példa egy egyszerű osztályt mutat be, amely néhány automatikusan implementált tulajdonsággal rendelkezik:

// 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;
    }
}

Az automatikusan implementált tulajdonságok nem deklarálhatók a felületeken. Az automatikusan implementált tulajdonságok deklarálnak egy privát példány háttérmezőt, és az interfészek nem deklarálhatnak példánymezőket. Ha egy tulajdonságot egy illesztőben deklarál egy törzs meghatározása nélkül, olyan tartozékokkal deklarál egy tulajdonságot, amelyet minden olyan típusnak végre kell hajtania, amely az adott felületet implementálja.

Az automatikusan implementált tulajdonságok a mezőkhöz hasonlóan inicializálhatók:

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

Az előző példában látható osztály nem módosítható. Az ügyfélkód a létrehozás után módosíthatja az objektumok értékeit. A jelentős viselkedést (metódusokat) és adatokat tartalmazó összetett osztályokban gyakran szükség van nyilvános tulajdonságokra. Az olyan kis osztályok vagy szerkezetek esetében azonban, amelyek csak egy értékhalmazt (adatot) foglalnak össze, és kevés vagy semmilyen viselkedéssel nem rendelkeznek, az objektumok nem módosíthatóvá tételéhez használja az alábbi lehetőségek egyikét:

  • Deklaráljon csak egy tartozékot get (a konstruktor kivételével mindenhol módosítható).
  • Deklaráljon egy tartozékot get és egy tartozékot init (nem módosítható mindenhol, kivéve az objektumépítés során).
  • Deklarálja a tartozékot set magánjellegűként (a fogyasztók számára nem módosítható).

További információ: Egyszerűsített osztály implementálása automatikusan implementált tulajdonságokkal.

Lásd még