Share via


Eigenschappen die automatisch zijn geïmplementeerd (C#-programmeerhandleiding)

Eigenschappen die automatisch zijn geïmplementeerd, maken eigenschapsdeclaratie beknopter wanneer er geen extra logica is vereist in de eigenschapstoegangsors. Ze maken ook clientcode in staat om objecten te maken. Wanneer u een eigenschap declareert zoals wordt weergegeven in het volgende voorbeeld, maakt de compiler een privé, anoniem back-upveld dat alleen toegankelijk is via de get eigenschappen en set accessors. init accessors kunnen ook worden gedeclareerd als automatisch geïmplementeerde eigenschappen.

Opmerking

In het volgende voorbeeld ziet u een eenvoudige klasse met enkele automatisch geïmplementeerde eigenschappen:

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

U kunt geen automatisch geïmplementeerde eigenschappen declareren in interfaces. Eigenschappen die automatisch zijn geïmplementeerd, declareren een back-upveld van een privé-exemplaar en interfaces declareren mogelijk geen exemplaarvelden. Het declareren van een eigenschap in een interface zonder een hoofdtekst te definiëren declareert een eigenschap met accessors die moeten worden geïmplementeerd door elk type dat die interface implementeert.

U kunt automatisch geïmplementeerde eigenschappen initialiseren die vergelijkbaar zijn met velden:

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

De klasse die in het vorige voorbeeld wordt weergegeven, kan worden gedempt. Clientcode kan de waarden in objecten wijzigen na het maken. In complexe klassen die significant gedrag (methoden) en gegevens bevatten, is het vaak nodig om openbare eigenschappen te hebben. Voor kleine klassen of structs die alleen een set waarden (gegevens) inkapselen en weinig of geen gedrag hebben, moet u echter een van de volgende opties gebruiken om de objecten onveranderbaar te maken:

  • Declareer alleen een get accessor (onveranderbaar overal behalve de constructor).
  • Declareer een get accessor en een init accessor (onveranderbaar overal behalve tijdens de constructie van objecten).
  • Declareer de set toegangsrechten als privé (onveranderbaar voor consumenten).

Zie Een lichtgewicht klasse implementeren met automatisch geïmplementeerde eigenschappen voor meer informatie.

Zie ook