Propiedades en C#

Las propiedades en C# son una herramienta fundamental para el encapsulamiento y el control de acceso a los datos de una clase. Permiten definir una interfaz pública para acceder y modificar el estado interno de un objeto, al mismo tiempo que ocultan la implementación subyacente.

¿Qué son las propiedades en C#?

Las propiedades en C# son miembros de una clase que proporcionan un mecanismo flexible para leer, escribir o calcular el valor de un campo privado. En lugar de exponer directamente los campos de una clase, las propiedades permiten controlar cómo se accede y modifica la información dentro de un objeto.

Esto fomenta el principio de encapsulamiento, donde los detalles internos de una clase se mantienen ocultos y solo se acceden a través de interfaces bien definidas.

Sintaxis básica

La sintaxis básica de una propiedad en C# consta de tres partes principales:


public tipo TipoPropiedad { get; set; }

Lenguaje del código: C# (cs)
  • public: Modificador de acceso que determina la visibilidad de la propiedad.
  • tipo: Tipo de dato que representa el valor de la propiedad.
  • TipoPropiedad: Nombre de la propiedad, que sigue las convenciones de nomenclatura de C#.
  • { get; set; }: Bloque de acceso que define los métodos de acceso para obtener (get) y establecer (set) el valor de la propiedad.

Fragmento de código


public string Nombre {
    get { return _nombre; }
    set { _nombre = value; }
}

private string _nombre;

Lenguaje del código: C# (cs)

En este ejemplo, la propiedad Nombre expone un método get para obtener el valor actual y un método set para asignarle un nuevo valor. Internamente, se utiliza un campo privado _nombre para almacenar el valor real.

Ventajas de usar propiedades:

  • Encapsulamiento: Ocultan la implementación interna de la clase, mejorando la seguridad y la flexibilidad.
  • Control de acceso: Permiten definir diferentes niveles de acceso para cada propiedad (pública, privada, protegida).
  • Validación de datos: Se pueden implementar validaciones personalizadas en el método set para garantizar la integridad de los datos.
  • Reutilización de código: Permiten encapsular lógica compleja en un solo lugar, facilitando la reutilización del código.

Tipos de propiedades:

  • Propiedades de lectura/escritura: Permiten tanto obtener como modificar el valor de la propiedad.
  • Propiedades de solo lectura: Solo se puede obtener el valor de la propiedad.
  • Propiedades de solo escritura: Solo se puede modificar el valor de la propiedad.

Ejemplos de propiedades:

Veamos algunos ejemplos prácticos de cómo se utilizan las propiedades en C#:

Ejemplo 1: Propiedad Simple


public class Persona
{
    private string nombre;

    public string Nombre
    {
        get { return nombre; }
        set { nombre = value; }
    }
}

Lenguaje del código: C# (cs)

En este ejemplo, la clase Persona tiene una propiedad Nombre que encapsula el campo privado nombre.

Ejemplo 2: Propiedad con Validación


public class CuentaBancaria
{
    private decimal saldo;

    public decimal Saldo
    {
        get { return saldo; }
        set
        {
            if (value >= 0)
                saldo = value;
            else
                throw new ArgumentException("El saldo no puede ser negativo.");
        }
    }
}

Lenguaje del código: C# (cs)

Aquí, la propiedad Saldo de la clase CuentaBancaria incluye una validación para asegurar que el saldo no sea negativo.

Propiedades de Solo Lectura y de Solo Escritura:

En ocasiones, puede ser útil definir propiedades que solo permitan lectura o escritura. Esto se logra modificando los métodos get y set de la siguiente manera:

  • Propiedad de Solo Lectura/Escritura: Estas propiedades permiten tanto la lectura como la escritura del valor de un campo. Se definen utilizando un bloque get para leer el valor y un bloque set para escribir el valor.

public class Empleado
{
    private string nombre;

    public string Nombre
    {
        get { return nombre; }
        set { nombre = value; }
    }
}

class Program
{
    static void Main(string[] args)
    {
        Empleado empleado = new Empleado();
        empleado.Nombre = "John Doe";
        Console.WriteLine($"Nombre del empleado: {empleado.Nombre}");
    }
}

Lenguaje del código: C# (cs)
  • Propiedad de Solo Lectura: Estas propiedades solo permiten la lectura del valor de un campo. Se definen utilizando solo un bloque get, lo que significa que el valor solo puede establecerse una vez, generalmente a través del constructor de la clase.

public class Circulo
{
    private double radio;

    public Circulo(double radio)
    {
        this.radio = radio;
    }

    public double Radio
    {
        get { return radio; }
    }
}

Lenguaje del código: C# (cs)

Conclusión:

Las propiedades son una herramienta poderosa en C# que permite crear código más robusto, flexible y fácil de entender. Dominar su uso es fundamental para el desarrollo de software orientado a objetos efectivo.