AYUDA .NET

C# Getter Setter (Cómo funciona para desarrolladores)

Actualizado 29 de agosto, 2023
Compartir:

Los getters y setters son conceptos esenciales en lenguajes de programación orientados a objetos como C#. Estos dos métodos nos permiten controlar el acceso y la modificación de las propiedades de las clases. En este tutorial, exploraremos aspectos principiantes e intermedios de los getters y setters privados de C# utilizando bloques de código.

Introducción a los Getters y Setters

¿Qué son los Getters y los Setters?

En el fondo, los getters y setters no son más que métodos con el mismo nombre en una clase. El getter devuelve el valor de una variable de campo privada, mientras que el setter modifica la importancia de la misma. Estos métodos garantizan que los datos internos de una clase (campos) se accede o modifica de forma segura y correcta.

¿Por qué las necesitamos?

Imagina que tienes una clase pública coche con una propiedad privada cadena descripción nombre. Si alguien ajeno a esta clase quiere conocer la descripción, no puede acceder directamente a ella porque es privada. Aquí entra en juego el papel de los getters y setters.

Un getter permitiría a los usuarios recuperar el valor de una private string description sin darles acceso directo a modificarla. Por otro lado, un setter permitiría a los usuarios modificar la descripción implícita del parámetro en las condiciones que establezcamos.

Modificadores de acceso

Los modificadores de acceso definen el nivel de visibilidad y accesibilidad de un campo o propiedad desde fuera de la clase. Los modificadores más utilizados son public y private.

  • Public: Los campos o propiedades declarados public pueden ser accedidos desde cualquier parte de tu programa. Por ejemplo, podrías tener una propiedad public int age que puede ser accedida y modificada por cualquier parte de tu código.
  • Privado: Las propiedades o campos declarados privados sólo son accesibles dentro de la clase definida, por ejemplo private int age. Esta encapsulación ayuda a evitar modificaciones no autorizadas y garantiza que el estado interno de la clase se mantenga correctamente.

Getter y Setter simples

Empecemos con un ejemplo sencillo.

//set accessor
public class Person
{
    private string name;  //  Se trata de una variable privada de propiedad de nombre de cadena

    public string GetName()   //  Este es el getter
    {
        return name;
    }

    public void SetName(string newName)   //  Este es el setter, nuevo valor
    {
        name = newName;
    }
}

static void Main()
{
    Person person = new Person();
    person.SetName("John");
    Console.WriteLine(person.GetName());
}
//set accessor
public class Person
{
    private string name;  //  Se trata de una variable privada de propiedad de nombre de cadena

    public string GetName()   //  Este es el getter
    {
        return name;
    }

    public void SetName(string newName)   //  Este es el setter, nuevo valor
    {
        name = newName;
    }
}

static void Main()
{
    Person person = new Person();
    person.SetName("John");
    Console.WriteLine(person.GetName());
}
'set accessor
Public Class Person
	Private name As String '  Se trata de una variable privada de propiedad de nombre de cadena

	Public Function GetName() As String '  Este es el getter
		Return name
	End Function

	Public Sub SetName(ByVal newName As String) '  Este es el setter, nuevo valor
		name = newName
	End Sub
End Class

Shared Sub Main()
	Dim person As New Person()
	person.SetName("John")
	Console.WriteLine(person.GetName())
End Sub
VB   C#

En la clase Persona anterior, tenemos tanto un getter (ObtenerNombre) y un colocador (SetName) para la propiedad name. Cuando ejecutes el método static void Main, imprimirá "John" ya que hemos establecido ese valor para el nombre usando el setter.

Propiedades autoimplementadas

Ahora, podrías pensar: "¿Siempre necesito escribir métodos separados para getters y setters?". La respuesta es "no". C# introdujo un concepto llamado "propiedades auto-implementadas" o "propiedades automáticas" para simplificar esto.

En C#, puede utilizar propiedades automáticas, que le ofrecen una forma abreviada de declarar un "campo privado" y su propiedad asociada. He aquí un ejemplo:

public class Student
{
    public string Name { get; set; } //  Esta es una propiedad auto-implementada o automática, public string Nombre
    public string Title {get; set;}
}

static void Main()
{
    Student student = new Student();
    student.Name = "Alice";  //  Uso de setter
    Console.WriteLine(student.Name);  //  Uso de getter
}
public class Student
{
    public string Name { get; set; } //  Esta es una propiedad auto-implementada o automática, public string Nombre
    public string Title {get; set;}
}

static void Main()
{
    Student student = new Student();
    student.Name = "Alice";  //  Uso de setter
    Console.WriteLine(student.Name);  //  Uso de getter
}
Public Class Student
	Public Property Name() As String ' -   Esta es una propiedad auto-implementada o automática, public string Nombre
	Public Property Title() As String
End Class

Shared Sub Main()
	Dim student As New Student()
	student.Name = "Alice" '  Uso de setter
	Console.WriteLine(student.Name) '  Uso de getter
End Sub
VB   C#

En la clase Estudiante, la propiedad Nombre es tanto un getter como un setter, que son auto-implementados. El compilador de C# crea un campo private string name entre bastidores, y la propiedad Name proporciona acceso a ese campo.

Modificadores de acceso avanzados en las propiedades

Propiedades de sólo lectura

A veces, es posible que desee proporcionar una propiedad que se puede leer pero no modificar externamente. Aquí es donde resultan útiles las propiedades de sólo lectura. Puedes omitir el setter en una propiedad para hacerla de sólo lectura.

Digamos que queremos añadir una propiedad de sólo lectura string Description a nuestra clase Person:

public class Person
{
    public string Name { get; set; }
    public string Description { get; }

    public Person(string name, string description)
    {
        Name = name;
        Description = description;
    }
}
public class Person
{
    public string Name { get; set; }
    public string Description { get; }

    public Person(string name, string description)
    {
        Name = name;
        Description = description;
    }
}
Public Class Person
	Public Property Name() As String
	Public ReadOnly Property Description() As String

	Public Sub New(ByVal name As String, ByVal description As String)
		Me.Name = name
		Me.Description = description
	End Sub
End Class
VB   C#

En este ejemplo, la propiedad Description sólo se puede establecer dentro del constructor de la clase Person con menos código. Una vez fijado, no puede modificarse externamente.

Colocadores privados

A veces, es posible que desee permitir que la propiedad sea leída desde fuera de la clase, pero sólo establecer desde dentro de la clase. Para ello se utiliza un "conjunto privado".

public class Program
{
    public string Description { get; private set; }

    public Program()
    {
        Description = "This is a program about getters and setters.";
    }
}

class ProgramTest
{
    static void Main()
    {
        Program myProgram = new Program();
        Console.WriteLine(myProgram.Description);  //  Permitido
        //  miPrograma.Descripción = "Nueva Descripción"; // No permitido
    }
}
public class Program
{
    public string Description { get; private set; }

    public Program()
    {
        Description = "This is a program about getters and setters.";
    }
}

class ProgramTest
{
    static void Main()
    {
        Program myProgram = new Program();
        Console.WriteLine(myProgram.Description);  //  Permitido
        //  miPrograma.Descripción = "Nueva Descripción"; // No permitido
    }
}
Public Class Program
	Private privateDescription As String
	Public Property Description() As String
		Get
			Return privateDescription
		End Get
		Private Set(ByVal value As String)
			privateDescription = value
		End Set
	End Property

	Public Sub New()
		Description = "This is a program about getters and setters."
	End Sub
End Class

Friend Class ProgramTest
	Shared Sub Main()
		Dim myProgram As New Program()
		Console.WriteLine(myProgram.Description) '  Permitido
		'  miPrograma.Descripción = "Nueva Descripción"; // No permitido
	End Sub
End Class
VB   C#

En la clase Programa, la propiedad Description tiene un private set, lo que significa que no puede ser modificada desde fuera de la clase, asegurando la integridad de los datos.

Herencia y anulación

Cuando trabajes con clases derivadas, puedes anular los métodos getter y setter para personalizar su comportamiento. Esto le permite añadir lógica adicional al obtener o establecer valores.

public class Person
{
    public virtual string Name { get; set; }
}

public class Student : Person
{
    private string studentID;

    public override string Name
    {
        get { return base.Name; }
        set
        {
            if (!string.IsNullOrEmpty(value))
                base.Name = value;
        }
    }
}
public class Person
{
    public virtual string Name { get; set; }
}

public class Student : Person
{
    private string studentID;

    public override string Name
    {
        get { return base.Name; }
        set
        {
            if (!string.IsNullOrEmpty(value))
                base.Name = value;
        }
    }
}
Public Class Person
	Public Overridable Property Name() As String
End Class

Public Class Student
	Inherits Person

	Private studentID As String

	Public Overrides Property Name() As String
		Get
			Return MyBase.Name
		End Get
		Set(ByVal value As String)
			If Not String.IsNullOrEmpty(value) Then
				MyBase.Name = value
			End If
		End Set
	End Property
End Class
VB   C#

En este ejemplo, la clase Student hereda de Person y sobrescribe el setter de la propiedad Name. Añade una comprobación de validación antes de establecer el nombre, asegurándose de que no está vacío o es nulo.

Presentación de Iron Suite para mejorar el desarrollo en C#

Iron Suite es una colección de herramientas de esfuerzo de investigación que potencian significativamente las capacidades de desarrollo de C#. Incluye IronPDF, IronXL, IronOCR e IronBarcode. Cada una de estas herramientas tiene una finalidad única y puede integrarse en diversos aspectos de C#.

IronPDF - Una potente herramienta de gestión de PDF

IronPDF es una biblioteca que permite a los desarrolladores crear, leer y editar documentos PDF en C#. Tanto si se trata de convertir HTML a PDF con el programa Tutorial de conversión de HTML a PDF o la gestión de metadatos PDF a través de getters y setters, IronPDF le tiene cubierto.

IronXL - Manipulación de Excel más fácil

Al trabajar con archivos Excel, IronXL simplifica el proceso de lectura y escritura. Esta herramienta puede utilizarse para manipular las cadenas o enteros privados y públicos de los archivos de Excel, de forma similar a como se podrían manejar los datos dentro de una clase utilizando la misma sintaxis para getters y setters en C#.

IronOCR - Reconocimiento óptico de caracteres en C#

IronOCR es una biblioteca de reconocimiento óptico de caracteres que traduce imágenes en texto que permite realizar búsquedas. Si su aplicación implica la lectura de texto de documentos escaneados, las potentes funciones de IronOCR pueden integrarse fácilmente. Puede manejar campos privados y descripciones de cadenas públicas, tal y como se esperaría en una clase Persona o una clase Alumno de la configuración del ejemplo anterior.

IronBarcode - Biblioteca de lectura y escritura de códigos de barras

IronBarcode es una herramienta esencial para las aplicaciones que requieren lectura y escritura de códigos de barras. Permite tanto el acceso directo a los datos del código de barras como su personalización mediante propiedades automáticas, al igual que los getters y setters utilizados en la programación en C#.

Iron Suite y Getters y Setters

El paquete Iron Suite se integra perfectamente con el desarrollo en C#, incluidos los getters y setters. Estas herramientas añaden valor a cualquier proyecto C#.

Conclusión

Resumiendo:

  1. Getter y Setter: Ayudan a acceder y modificar los campos privados de una clase.
  2. Propiedades automáticas: Una forma elegante de tener getters y setters automáticos con la ayuda de propiedades auto-implementadas.
  3. Modificadores de acceso: Ayudan a afinar la accesibilidad de las propiedades.

    A estas alturas, deberías tener un sólido conocimiento de cómo utilizar getters y setters en C#.

    El conjunto de herramientas de Iron Suite ofrece una funcionalidad increíble para los desarrolladores de C#. Cada uno de estos productos, incluidos IronPDF, IronXL, IronOCR e IronBarcode, viene con un **Prueba gratuita que le permite explorar e integrar estas potentes bibliotecas en sus proyectos sin ninguna inversión inicial.

    Cuando esté listo para comprometerse, las licencias individuales comienzan a partir de $749. Si considera que más de una de estas herramientas se ajusta a sus necesidades, puede aprovechar la oportunidad de adquirir el paquete Iron Suite completo por el precio de sólo dos licencias individuales.

< ANTERIOR
Operadores lógicos de C# (Cómo funciona para desarrolladores)
SIGUIENTE >
C# Split String (Cómo funciona para desarrolladores)

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123