Menu
Coddy logo textTech

Miembros con cuerpo de expresión

Parte de la sección Programación Orientada a Objetos del Journey de C# de Coddy. Lección 14 de 70.

Los miembros con cuerpo de expresión proporcionan una sintaxis concisa para los miembros que contienen solo una expresión. En lugar de escribir cuerpos completos de métodos o propiedades con llaves, usas la sintaxis de flecha =>.

Para los métodos que devuelven una única expresión, puedes reemplazar todo el cuerpo:

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

// Método con cuerpo de expresión
public int Add(int a, int b) => a + b;

Esta sintaxis también funciona para las propiedades de solo lectura, que ya has visto brevemente:

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

También puedes usar cuerpos de expresión para los captadores y establecedores de propiedades individualmente:

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

Incluso los constructores pueden usar esta sintaxis cuando contienen una única instrucción:

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

Los miembros con cuerpo de expresión hacen que tu código sea más legible cuando la lógica es simple. Úsalos para operaciones sencillas, pero mantén los cuerpos tradicionales cuando necesites varias instrucciones o una lógica compleja.

challenge icon

Desafío

Fácil

Construyamos una calculadora de precios de productos que muestre el poder de los miembros con cuerpo de expresión para escribir código limpio y conciso.

Crearás dos archivos para organizar tu código:

  • Product.cs: Define una clase Product en el espacio de nombres Store. Esta clase debe demostrar varios miembros con cuerpo de expresión:
    • Una propiedad implementada automáticamente Name (string) y BasePrice (decimal)
    • Un constructor con cuerpo de expresión que establece ambas propiedades
    • Una propiedad de solo lectura con cuerpo de expresión TaxAmount que calcula el 10 % del precio base
    • Una propiedad de solo lectura con cuerpo de expresión TotalPrice que devuelve el precio base más el importe del impuesto
    • Un método con cuerpo de expresión GetDiscount(decimal percentage) que devuelve el importe del descuento (el precio base multiplicado por el porcentaje y dividido entre 100)
    • Un método con cuerpo de expresión GetFinalPrice(decimal discountPercentage) que devuelve el precio total menos el descuento
  • Program.cs: En tu archivo principal, crea un Product usando valores de entrada y, después, muestra el desglose de su precio.

Recibirás tres entradas:

  • Nombre del producto
  • Precio base
  • Porcentaje de descuento que se aplicará

Imprime los detalles del precio con este formato:

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

Por ejemplo, si las entradas son Laptop, 1000 y 15, la salida debería ser:

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

Da formato a cada valor monetario con exactamente dos decimales, por ejemplo value.ToString("F2") o $"{value:F2}". Esto se aplica por igual al precio base, el impuesto, el total, el descuento y el precio final.

Recuerda usar la sintaxis de flecha => para todos los miembros que contengan una sola expresión. ¡Esto mantiene tu código limpio y fácil de leer!

Pruébalo tú mismo

using System;
using Store;

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

        // Crear un objeto Product usando los valores de entrada
        Product product = new Product(name, basePrice);

        // Calcular el monto del descuento usando el método GetDiscount
        decimal discountAmount = product.GetDiscount(discountPercentage);

        // Calcular el precio final usando el método GetFinalPrice
        decimal finalPrice = product.GetFinalPrice(discountPercentage);

        // Imprimir los detalles de precios en el formato requerido:
        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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos

Practica por tu cuenta: Compilador de C# online