Automatisch implementierte Eigenschaften
Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy — Lektion 10 von 70.
Automatisch implementierte Eigenschaften ermöglichen es Ihnen, Eigenschaften zu deklarieren, ohne explizite dahinterliegende Felder (Backing Fields) zu schreiben. Der Compiler erstellt automatisch im Hintergrund ein verborgenes privates Feld.
Anstatt diesen ausführlichen Code zu schreiben:
public class Product
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}Sie können einfach schreiben:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}Sie können Standardwerte auch direkt in der Deklaration festlegen:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}Automatisch implementierte Eigenschaften sind ideal, wenn Sie keine Validierung oder benutzerdefinierte Logik im Getter oder Setter benötigen. Sie halten Ihre Klassen sauber und reduzieren Boilerplate-Code erheblich.
Aufgabe
EinfachLassen Sie uns ein einfaches Inventarsystem mit automatisch implementierten Eigenschaften erstellen, um Artikel in einem Geschäft zu verwalten.
Sie werden zwei Dateien erstellen, um Ihren Code zu organisieren:
Item.cs: Definieren Sie eineItem-Klasse im NamespaceInventorymit automatisch implementierten Eigenschaften fürName(string),Price(decimal) undInStock(bool). Legen Sie Standardwerte fest:Namesollte standardmäßig auf"Unknown"gesetzt sein,Priceauf0.0mundInStockauftrue.Program.cs: Erstellen Sie in Ihrer Hauptdatei zweiItem-Objekte mithilfe von Objektinitialisierern. Lesen Sie den Namen und den Preis für jeden Artikel aus der Eingabe ein und geben Sie dann die Details jedes Artikels aus.
Sie erhalten vier Eingaben:
- Name des ersten Artikels
- Preis des ersten Artikels
- Name des zweiten Artikels
- Preis des zweiten Artikels
Geben Sie jeden Artikel in diesem Format aus:
Item: {Name}, Price: {Price}, In Stock: {InStock}Wenn die Eingaben beispielsweise Laptop, 999.99, Mouse und 25.50 sind, sollte die Ausgabe wie folgt aussehen:
Item: Laptop, Price: 999.99, In Stock: True
Item: Mouse, Price: 25.50, In Stock: TrueSpickzettel
Automatisch implementierte Eigenschaften ermöglichen es Ihnen, Eigenschaften zu deklarieren, ohne explizite Backing-Felder zu schreiben. Der Compiler erstellt automatisch ein verstecktes privates Feld.
Grundlegende Syntax:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}Standardwerte festlegen:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}Automatisch implementierte Eigenschaften sind ideal, wenn Sie keine Validierung oder benutzerdefinierte Logik im Getter oder Setter benötigen.
Probier es selbst
using System;
using Inventory;
class Program
{
public static void Main(string[] args)
{
// Eingaben für das erste Element lesen
string name1 = Console.ReadLine();
decimal price1 = Convert.ToDecimal(Console.ReadLine());
// Eingaben für das zweite Element lesen
string name2 = Console.ReadLine();
decimal price2 = Convert.ToDecimal(Console.ReadLine());
// TODO: Zwei Item-Objekte mithilfe von Objektinitialisierern erstellen
// Die Eigenschaften Name und Price aus den Eingabewerten setzen
// TODO: Die Details jedes Elements in folgendem Format ausgeben:
// Item: {Name}, Price: {Price}, In Stock: {InStock}
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienNamespaces & DirektivenEinführung in Klassen & ObjekteDas 'this'-SchlüsselwortMethoden und ParameterFelder vs. EigenschaftenKonstruktorenObjekt-InitialisiererZusammenfassung - Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (:) SyntaxDas 'base'-SchlüsselwortVirtual & Override SchlüsselwörterVersiegelte KlassenDie 'object'-BasisklasseZusammenfassung – Mitarbeiter-Hierarchie7Fortgeschrittene Funktionen
OperatorüberladungIndexer (this[])ToString() überschreibenErweiterungsmethodenZusammenfassung - Benutzerdefinierte Liste2Eigenschaften & Statische Member
Automatisch implementierte EigenschaftenRead-Only- & Write-Only-EigenschaftenStatische Felder & MethodenStatische KlassenExpression-Bodied Member5Polymorphismus & Interfaces
Compile- vs. Runtime-PolymorphismusInterface vs. abstrakte KlasseMehrfache InterfacesExplizite InterfacesUpcasting & DowncastingRecap – Shape Calculator3Klassenarchitektur
Instanz- vs. statische Daten'readonly' & 'const' SchlüsselwörterBacking FieldsZusammenfassung - Bankkonto-Manager6Kapselung
ZugriffsmodifikatorenProperties zur KapselungImplementierung von Data HidingImmutability-MusterRückblick – Studierendendaten