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 eeninit
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
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar:Feedback verzenden en bekijken voor