Menu
Coddy logo textTech

Membros com Corpo de Expressão

Parte da seção Programação Orientada a Objetos do Journey de C# da Coddy — lição 14 de 70.

Membros de expressão corporificada (expression-bodied members) fornecem uma sintaxe concisa para membros que contêm apenas uma única expressão. Em vez de escrever corpos completos de métodos ou propriedades com chaves, você usa a sintaxe de seta =>.

Para métodos que retornam uma única expressão, você pode substituir o corpo inteiro:

// Método tradicional
public int Add(int a, int b)
{
    return a + b;
}

// Método com corpo de expressão
public int Add(int a, int b) => a + b;

Esta sintaxe funciona para propriedades somente leitura também, que você já viu brevemente:

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

Você também pode usar corpos de expressão para getters e setters de propriedade individualmente:

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

Até mesmo construtores podem usar essa sintaxe quando contêm uma única instrução:

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

Expression-bodied members tornam seu código mais legível quando a lógica é simples. Use-os para operações diretas, mas mantenha os corpos tradicionais quando precisar de várias instruções ou de uma lógica complexa.

challenge icon

Desafio

Fácil

Vamos construir uma calculadora de preços de produtos que demonstra o poder dos membros com corpo de expressão (expression-bodied members) para escrever um código limpo e conciso.

Você criará dois arquivos para organizar seu código:

  • Product.cs: Defina uma classe Product no namespace Store. Esta class deve demonstrar vários membros com corpo de expressão:
    • Propriedades auto-implementadas Name (string) e BasePrice (decimal)
    • Um constructor com corpo de expressão que define ambas as propriedades
    • Uma propriedade somente leitura com corpo de expressão TaxAmount que calcula 10% do preço base
    • Uma propriedade somente leitura com corpo de expressão TotalPrice que retorna o preço base mais o valor do imposto
    • Um method com corpo de expressão GetDiscount(decimal percentage) que retorna o valor do desconto (preço base multiplicado por percentage dividido por 100)
    • Um method com corpo de expressão GetFinalPrice(decimal discountPercentage) que retorna o preço total minus o desconto
  • Program.cs: No seu arquivo principal, crie um Product usando valores de input e, em seguida, exiba o detalhamento do preço.

Você receberá três inputs:

  • Nome do produto
  • Preço base
  • Percentual de desconto a aplicar

Imprima os detalhes do preço neste format:

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

Por exemplo, se os inputs forem Laptop, 1000 e 15, a saída deve ser:

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

Formate cada valor monetário para exatamente duas casas decimais — por exemplo, value.ToString("F2") ou $"{value:F2}". Isso se aplica ao preço base, ao imposto, ao total, ao desconto e ao preço final por igual.

Lembre-se de usar a sintaxe de seta => para todos os membros que contêm uma única expressão. Isso mantém seu código limpo e legível!

Experimente você mesmo

using System;
using Store;

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

        // Criar um objeto Product usando os valores de entrada
        Product product = new Product(name, basePrice);

        // Calcular o valor do desconto usando o método GetDiscount
        decimal discountAmount = product.GetDiscount(discountPercentage);

        // Calcular o preço final usando o método GetFinalPrice
        decimal finalPrice = product.GetFinalPrice(discountPercentage);

        // Imprimir os detalhes de preço no formato exigido:
        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 seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos