Menu
Coddy logo textTech

Campos vs Propiedades

Parte de la sección Programación Orientada a Objetos del Journey de C# de Coddy — lección 6 de 70.

Los campos son variables declaradas directamente en una clase. Las propiedades son miembros que proporcionan acceso controlado a los campos utilizando los accesores get y set.

Los campos almacenan datos directamente

public class Person
{
    // Campos - almacenamiento directo de variables
    private string name;
    private int age;
}

Las propiedades proporcionan acceso controlado con get y set

public class Person
{
    private string name;
    
    // Propiedad con campo de respaldo
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

Propiedades autoimplementadas (forma abreviada)

public class Person
{
    // Propiedad autoimplementada
    public string Name { get; set; }
    public int Age { get; set; }
}

Las propiedades pueden incluir lógica de validación

public class Person
{
    private int age;
    
    public int Age
    {
        get { return age; }
        set 
        { 
            if (value >= 0 && value <= 120)
                age = value;
        }
    }
}

Propiedad de solo lectura (solo el accesor get)

public class Circle
{
    private double radius;
    
    public double Radius
    {
        get { return radius; }
    }
    
    // Propiedad calculada de solo lectura
    public double Area
    {
        get { return Math.PI * radius * radius; }
    }
}

Los campos suelen ser privados y se accede a ellos a través de propiedades. Las propiedades le permiten agregar lógica, validación y control sobre cómo se accede a los datos o cómo se modifican. Las propiedades autoimplementadas son convenientes cuando no se necesita lógica adicional.

challenge icon

Desafío

Intermedio

Crea una clase BankAccount que demuestre la diferencia entre campos y propiedades:

  • Un campo privado balance para almacenar el saldo de la cuenta
  • Una propiedad autoimplementada AccountName
  • Una propiedad de solo lectura Balance que devuelve el campo balance
  • Métodos Deposit y Withdraw que modifican el campo privado

Hoja de referencia

Los campos son variables declaradas directamente en una clase, mientras que las propiedades proporcionan acceso controlado a los campos mediante los accesores get y set.

Los campos almacenan datos directamente:

public class Person
{
    private string name;
    private int age;
}

Las propiedades proporcionan acceso controlado con get y set:

public class Person
{
    private string name;
    
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

Propiedades autoimplementadas (forma abreviada):

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

Propiedades con lógica de validación:

public int Age
{
    get { return age; }
    set 
    { 
        if (value >= 0 && value <= 120)
            age = value;
    }
}

Propiedad de solo lectura (solo accesor get):

public double Area
{
    get { return Math.PI * radius * radius; }
}

Los campos suelen ser privados y se accede a ellos a través de propiedades. Las propiedades permiten añadir lógica, validación y control sobre cómo se accede a los datos o cómo se modifican.

Pruébalo tú mismo

using System;

class Program
{
    static void Main()
    {
        string accountName = Console.ReadLine();
        decimal initialBalance = decimal.Parse(Console.ReadLine());
        decimal depositAmount = decimal.Parse(Console.ReadLine());
        
        BankAccount account = new BankAccount(accountName, initialBalance);
        
        Console.WriteLine($"Account: {account.AccountName}");
        Console.WriteLine($"Initial Balance: ${account.Balance}");
        
        account.Deposit(depositAmount);
        Console.WriteLine($"After Deposit: ${account.Balance}");
        
        string result = account.Withdraw(2000);
        Console.WriteLine($"Withdraw attempt: {result}");
        Console.WriteLine($"Final Balance: ${account.Balance}");
    }
}
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