Menu
Coddy logo textTech

Expression-Bodied Member

Teil des Abschnitts Objektorientierte Programmierung der C#-Journey von Coddy — Lektion 14 von 70.

Expression-bodied-Elemente bieten eine prägnante Syntax für Elemente, die nur einen einzelnen Ausdruck enthalten. Anstatt vollständige Methoden- oder Eigenschaftskörper mit geschweiften Klammern zu schreiben, verwenden Sie die =>-Pfeilsyntax.

Für Methoden, die einen einzelnen Ausdruck zurückgeben, können Sie den gesamten Rumpf ersetzen:

// Traditionelle Methode
public int Add(int a, int b)
{
    return a + b;
}

// Expression-bodied-Methode
public int Add(int a, int b) => a + b;

Diese Syntax funktioniert auch für schreibgeschützte Eigenschaften, was Sie bereits kurz gesehen haben:

public class Circle
{
    public double Radius { get; set; }
    public double Area => Math.PI * Radius * Radius;
    public double Circumference => 2 * Math.PI * Radius;
}

Sie können Expression Bodies auch für Getter und Setter von Eigenschaften individuell verwenden:

private string name;
public string Name
{
    get => name;
    set => name = value.Trim();
}

Sogar Konstruktoren können diese Syntax verwenden, wenn sie eine einzelne Anweisung enthalten:

public class Person
{
    public string Name { get; }
    public Person(string name) => Name = name;
}

Expression-bodied members machen Ihren Code lesbarer, wenn die Logik einfach ist. Verwenden Sie sie für einfache Operationen, aber bleiben Sie bei traditionellen Anweisungsblöcken, wenn Sie mehrere Anweisungen oder eine komplexe Logik benötigen.

challenge icon

Aufgabe

Einfach

Lass uns einen Produktpreisrechner bauen, der die Leistungsfähigkeit von expression-bodied Members demonstriert, um sauberen und prägnanten Code zu schreiben.

Du wirst zwei Dateien erstellen, um deinen Code zu strukturieren:

  • Product.cs: Definiere eine Product-Klasse im Store-Namespace. Diese Klasse sollte verschiedene expression-bodied Members demonstrieren:
    • Eine auto-implemented Property Name (string) und BasePrice (decimal)
    • Einen expression-bodied Konstruktor, der beide Properties setzt
    • Eine expression-bodied schreibgeschützte Property TaxAmount, die 10% des Basispreises berechnet
    • Eine expression-bodied schreibgeschützte Property TotalPrice, die den Basispreis plus Steuerbetrag zurückgibt
    • Eine expression-bodied Methode GetDiscount(decimal percentage), die den Rabattbetrag zurückgibt (Basispreis multipliziert mit Prozent geteilt durch 100)
    • Eine expression-bodied Methode GetFinalPrice(decimal discountPercentage), die den Gesamtpreis abzüglich des Rabatts zurückgibt
  • Program.cs: Erstelle in deiner Hauptdatei ein Product unter Verwendung von Eingabewerten und zeige dann dessen Preisaufschlüsselung an.

Du wirst drei Eingaben erhalten:

  • Produktname
  • Basispreis
  • Anzuwendender Rabattprozentsatz

Gib die Preisdetails in diesem Format aus:

Product: {Name}
Base Price: {BasePrice}
Tax (10%): {TaxAmount}
Total Price: {TotalPrice}
Discount ({percentage}%): {discountAmount}
Final Price: {finalPrice}

Wenn die Eingaben beispielsweise Laptop, 1000 und 15 lauten, sollte die Ausgabe wie folgt aussehen:

Product: Laptop
Base Price: 1000.00
Tax (10%): 100.00
Total Price: 1100.00
Discount (15%): 150.00
Final Price: 950.00

Formatiere jeden Geldbetrag auf genau zwei Nachkommastellen — zum Beispiel value.ToString("F2") oder $"{value:F2}". Das gilt gleichermaßen für den Basispreis, die Steuer, den Gesamtbetrag, den Rabatt und den Endpreis.

Denke daran, die Pfeilsyntax => für alle Members zu verwenden, die einen einzelnen Ausdruck enthalten. Das hält deinen Code sauber und lesbar!

Probier es selbst

using System;
using Store;

class Program
{
    public static void Main(string[] args)
    {
        // Eingaben lesen
        string name = Console.ReadLine();
        decimal basePrice = Convert.ToDecimal(Console.ReadLine());
        decimal discountPercentage = Convert.ToDecimal(Console.ReadLine());

        // Erstelle ein Product-Objekt mit den Eingabewerten
        Product product = new Product(name, basePrice);

        // Berechne den Rabattbetrag mit der GetDiscount-Methode
        decimal discountAmount = product.GetDiscount(discountPercentage);

        // Berechne den Endpreis mit der GetFinalPrice-Methode
        decimal finalPrice = product.GetFinalPrice(discountPercentage);

        // Gib die Preisdetails im erforderlichen Format aus:
        Console.WriteLine($"Product: {product.Name}");
        Console.WriteLine($"Base Price: {product.BasePrice:F2}");
        Console.WriteLine($"Tax (10%): {product.TaxAmount:F2}");
        Console.WriteLine($"Total Price: {product.TotalPrice:F2}");
        Console.WriteLine($"Discount ({discountPercentage}%): {discountAmount:F2}");
        Console.WriteLine($"Final Price: {finalPrice:F2}");
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung