Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
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.
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.
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.
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.private int age
. Esta encapsulación ayuda a evitar modificaciones no autorizadas y garantiza que el estado interno de la clase se mantenga correctamente.Empecemos con un ejemplo sencillo.
//set accessor
public class Person
{
private string name; // This is a private string name property variable
public string GetName() // This is the getter
{
return name;
}
public void SetName(string newName) // This is the setter, new value
{
name = newName;
}
}
static void Main()
{
Person person = new Person();
person.SetName("John");
Console.WriteLine(person.GetName());
}
//set accessor
public class Person
{
private string name; // This is a private string name property variable
public string GetName() // This is the getter
{
return name;
}
public void SetName(string newName) // This is the setter, new value
{
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 ' This is a private string name property variable
Public Function GetName() As String ' This is the getter
Return name
End Function
Public Sub SetName(ByVal newName As String) ' This is the setter, new value
name = newName
End Sub
End Class
Shared Sub Main()
Dim person As New Person()
person.SetName("John")
Console.WriteLine(person.GetName())
End Sub
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.
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; } // This is an auto-implemented or automatic property, public string Name
public string Title {get; set;}
}
static void Main()
{
Student student = new Student();
student.Name = "Alice"; // Using setter
Console.WriteLine(student.Name); // Using getter
}
public class Student
{
public string Name { get; set; } // This is an auto-implemented or automatic property, public string Name
public string Title {get; set;}
}
static void Main()
{
Student student = new Student();
student.Name = "Alice"; // Using setter
Console.WriteLine(student.Name); // Using getter
}
Public Class Student
Public Property Name() As String ' - This is an auto-implemented or automatic property, public string Name
Public Property Title() As String
End Class
Shared Sub Main()
Dim student As New Student()
student.Name = "Alice" ' Using setter
Console.WriteLine(student.Name) ' Using getter
End Sub
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.
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
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.
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); // Allowed
// myProgram.Description = "New Description"; // Not allowed
}
}
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); // Allowed
// myProgram.Description = "New Description"; // Not allowed
}
}
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) ' Allowed
' myProgram.Description = "New Description"; // Not allowed
End Sub
End Class
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.
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
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.
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#.
Más información sobre IronPDF que 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 como de gestionar metadatos PDF mediante getters y setters, IronPDF tiene todo lo que necesitas.
Al trabajar con archivos Excel,Biblioteca IronXL Excel 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#.
Explorar IronOCRel objetivo del proyecto es crear una biblioteca de reconocimiento óptico de caracteres que traduzca imágenes en texto que permita 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.
Descubra las características de IronBarcode para 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#.
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#.
Resumiendo:
Getter y Setter
: Ayudan a acceder y modificar los campos privados de una clase.
Propiedades automáticas: Una forma elegante de tener getters y setters automáticos con la ayuda de propiedades auto-implementadas.
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 unPrueba gratuita de las herramientas de Iron Softwareque 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.
9 productos API .NET para sus documentos de oficina