Menu
Coddy logo textTech

Membri con corpo di espressione

Fa parte della sezione Programmazione orientata agli oggetti del percorso C# di Coddy. Lezione 14 di 70.

I membri con corpo espressione offrono una sintassi concisa per i membri che contengono una sola espressione. Invece di scrivere i corpi completi di metodi o proprietà con le parentesi graffe, usi la sintassi a freccia =>.

Per i metodi che restituiscono una singola espressione, puoi sostituire l'intero corpo:

// Metodo tradizionale
public int Add(int a, int b)
{
    return a + b;
}

// Metodo con corpo a espressione
public int Add(int a, int b) => a + b;

Questa sintassi funziona anche per le proprietà di sola lettura, come hai già visto brevemente:

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

Puoi anche usare corpi di espressione separatamente per i getter e i setter delle proprietà:

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

Anche i costruttori possono usare questa sintassi quando contengono una singola istruzione:

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

I membri con corpo espressione rendono il codice più leggibile quando la logica è semplice. Usali per operazioni semplici, ma attieniti ai corpi tradizionali quando hai bisogno di più istruzioni o di una logica complessa.

challenge icon

Sfida

Facile

Creiamo un calcolatore dei prezzi dei prodotti che mostri la potenza dei membri con corpo espressione per scrivere codice pulito e conciso.

Creerai due file per organizzare il codice:

  • Product.cs: definisci una classe Product nello spazio dei nomi Store. Questa classe deve mostrare diversi membri con corpo espressione:
    • Una proprietà implementata automaticamente Name (string) e BasePrice (decimal)
    • Un costruttore con corpo espressione che imposta entrambe le proprietà
    • Una proprietà di sola lettura con corpo espressione TaxAmount che calcola il 10% del prezzo base
    • Una proprietà di sola lettura con corpo espressione TotalPrice che restituisce il prezzo base più l'importo dell'imposta
    • Un metodo con corpo espressione GetDiscount(decimal percentage) che restituisce l'importo dello sconto (prezzo base moltiplicato per la percentuale e diviso per 100)
    • Un metodo con corpo espressione GetFinalPrice(decimal discountPercentage) che restituisce il prezzo totale meno lo sconto
  • Program.cs: nel file principale, crea un Product usando i valori inseriti, quindi mostra il dettaglio dei prezzi.

Riceverai tre input:

  • Nome del prodotto
  • Prezzo base
  • Percentuale di sconto da applicare

Stampa i dettagli dei prezzi in questo formato:

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

Ad esempio, se gli input sono Laptop, 1000 e 15, l'output dovrebbe essere:

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

Formatta ogni valore monetario con esattamente due cifre decimali, ad esempio value.ToString("F2") o $"{value:F2}". Questo vale allo stesso modo per il prezzo base, l'imposta, il totale, lo sconto e il prezzo finale.

Ricorda di usare la sintassi della freccia => per tutti i membri che contengono una singola espressione. In questo modo il codice resterà pulito e leggibile!

Provalo tu

using System;
using Store;

class Program
{
    public static void Main(string[] args)
    {
        // Leggi i valori di input
        string name = Console.ReadLine();
        decimal basePrice = Convert.ToDecimal(Console.ReadLine());
        decimal discountPercentage = Convert.ToDecimal(Console.ReadLine());

        // Crea un oggetto Product usando i valori di input
        Product product = new Product(name, basePrice);

        // Calcola l'importo dello sconto usando il metodo GetDiscount
        decimal discountAmount = product.GetDiscount(discountPercentage);

        // Calcola il prezzo finale usando il metodo GetFinalPrice
        decimal finalPrice = product.GetFinalPrice(discountPercentage);

        // Stampa i dettagli dei prezzi nel formato richiesto:
        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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore C# online