Menu
Coddy logo textTech

Składowe z ciałem wyrażeniowym

Część sekcji Programowanie obiektowe ścieżki C# w Coddy. Lekcja 14 z 70.

Elementy z ciałem będącym wyrażeniem zapewniają zwięzłą składnię dla elementów zawierających tylko jedno wyrażenie. Zamiast pisać pełne ciała metod lub właściwości w nawiasach klamrowych, używasz składni strzałki =>.

W przypadku metod zwracających pojedyncze wyrażenie możesz zastąpić całe ciało:

// Tradycyjna metoda
public int Add(int a, int b)
{
    return a + b;
}

// Metoda z ciałem wyrażeniowym
public int Add(int a, int b) => a + b;

Ta składnia działa również w przypadku właściwości tylko do odczytu, co zostało już krótko pokazane:

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

Możesz też używać ciał wyrażeń osobno dla metod pobierających i ustawiających właściwości:

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

Nawet konstruktory mogą używać tej składni, gdy zawierają pojedynczą instrukcję:

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

Elementy z ciałem wyrażeniowym zwiększają czytelność kodu, gdy logika jest prosta. Używaj ich do nieskomplikowanych operacji, ale stosuj tradycyjne ciała, gdy potrzebujesz wielu instrukcji lub złożonej logiki.

challenge icon

Wyzwanie

Łatwy

Zbudujmy kalkulator cen produktów, który pokaże, jak wyrażenia przypisane do składowych pozwalają pisać czysty i zwięzły kod.

Utworzysz dwa pliki, aby uporządkować kod:

  • Product.cs: Zdefiniuj klasę Product w przestrzeni nazw Store. Klasa powinna demonstrować różne składowe wyrażeniowe:
    • Automatycznie implementowane właściwości Name (string) i BasePrice (decimal)
    • Konstruktor wyrażeniowy, który ustawia obie właściwości
    • Wyrażeniową właściwość tylko do odczytu TaxAmount, która oblicza 10% ceny bazowej
    • Wyrażeniową właściwość tylko do odczytu TotalPrice, która zwraca cenę bazową powiększoną o kwotę podatku
    • Wyrażeniową metodę GetDiscount(decimal percentage), która zwraca kwotę rabatu (cena bazowa pomnożona przez wartość procentową i podzielona przez 100)
    • Wyrażeniową metodę GetFinalPrice(decimal discountPercentage), która zwraca cenę całkowitą pomniejszoną o rabat
  • Program.cs: W głównym pliku utwórz obiekt Product na podstawie wprowadzonych wartości, a następnie wyświetl szczegółowe zestawienie ceny.

Otrzymasz trzy dane wejściowe:

  • Nazwa produktu
  • Cena bazowa
  • Procent rabatu do zastosowania

Wyświetl szczegóły ceny w tym formacie:

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

Na przykład, jeśli danymi wejściowymi są Laptop, 1000 i 15, wynik powinien wyglądać tak:

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

Sformatuj każdą wartość pieniężną do dokładnie dwóch miejsc po przecinku, na przykład value.ToString("F2") lub $"{value:F2}". Dotyczy to ceny bazowej, podatku, sumy, rabatu i ceny końcowej.

Pamiętaj, aby używać składni strzałki => dla wszystkich składowych zawierających pojedyncze wyrażenie. Dzięki temu kod będzie przejrzysty i czytelny!

Spróbuj swoich sił

using System;
using Store;

class Program
{
    public static void Main(string[] args)
    {
        // Odczytaj dane wejściowe
        string name = Console.ReadLine();
        decimal basePrice = Convert.ToDecimal(Console.ReadLine());
        decimal discountPercentage = Convert.ToDecimal(Console.ReadLine());

        // Utwórz obiekt Product, używając wartości wejściowych
        Product product = new Product(name, basePrice);

        // Oblicz kwotę rabatu za pomocą metody GetDiscount
        decimal discountAmount = product.GetDiscount(discountPercentage);

        // Oblicz cenę końcową za pomocą metody GetFinalPrice
        decimal finalPrice = product.GetFinalPrice(discountPercentage);

        // Wyświetl szczegóły cenowe w wymaganym formacie:
        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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C# online