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 única expresión. En lugar de escribir cuerpos completos de métodos o propiedades con llaves, se utiliza la sintaxis de flecha =>.

Para los métodos que devuelven una sola expresión, puedes reemplazar el cuerpo completo:

// 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 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 getters y setters de propiedades de forma individual:

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

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

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

Los miembros con cuerpo de expresión hacen que su código sea más legible cuando la lógica es sencilla. Úselos para operaciones directas, pero mantenga los cuerpos tradicionales cuando necesite múltiples sentencias o lógica compleja.

challenge icon

Desafío

Fácil

Vamos a construir un calculador 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 auto-implementada 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 monto del impuesto
    • Un método con cuerpo de expresión GetDiscount(decimal percentage) que devuelve el monto del descuento (precio base multiplicado por el porcentaje dividido por 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 utilizando los valores de entrada, luego muestra el desglose de su precio.

Recibirás tres entradas:

  • Nombre del producto
  • Precio base
  • Porcentaje de descuento a aplicar

Imprime los detalles del precio en 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
Tax (10%): 100
Total Price: 1100
Discount (15%): 150
Final Price: 950

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

Hoja de referencia

Los miembros con cuerpo de expresión utilizan la sintaxis de flecha => para miembros que contienen una sola expresión, proporcionando una alternativa concisa a los cuerpos de métodos y propiedades tradicionales.

Métodos con cuerpo de expresión:

// 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;

Propiedades de solo lectura con cuerpo de expresión:

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

Getters y setters de propiedades con cuerpo de expresión:

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

Constructores con cuerpo de expresión:

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

Utilice miembros con cuerpo de expresión para operaciones sencillas. Para múltiples sentencias o lógica compleja, utilice cuerpos tradicionales.

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());

        // TODO: Crear un objeto Product usando los valores de entrada

        // TODO: Calcular el monto del descuento usando el método GetDiscount

        // TODO: Calcular el precio final usando el método GetFinalPrice

        // TODO: Imprimir los detalles de precios en el formato requerido:
        // Product: {Name}
        // Base Price: {BasePrice}
        // Tax (10%): {TaxAmount}
        // Total Price: {TotalPrice}
        // Discount ({percentage}%): {discountAmount}
        // Final Price: {finalPrice}
    }
}
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