Pruebe en producción sin marcas de agua.
Funciona donde lo necesite.
Obtén 30 días de producto totalmente funcional.
Ténlo en funcionamiento en minutos.
Acceso completo a nuestro equipo de asistencia técnica durante la prueba del producto
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 aseguran que los datos internos de una clase (campos) sean accedidos o modificados de manera segura y correcta.
Imagina tener una clase pública coche
con una propiedad privada de 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 un private string description
sin darles acceso directo para modificarlo. 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 comúnmente utilizados son public
y private
.
Public
: Los campos o propiedades declarados como public
pueden ser accedidos desde cualquier parte de su 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
: Las propiedades o campos declarados como privados solo pueden accederse 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.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 class Person
anterior, tenemos tanto un getter (GetName) como un setter (SetName) para la propiedad name
. Cuando ejecutes el método static void Main
, imprimirá "John" ya que hemos configurado ese valor para el nombre utilizando 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#, puedes usar propiedades automáticas, que te proporcionan 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
Student
, la propiedad Name
es tanto un getter como un setter, que son auto-implementados. El compilador de C# crea un campo private string name
detrás de escena, 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.
Supongamos que queremos agregar una propiedad de solo 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
solo 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. Esto se logra utilizando un private set
.
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 class Program
, 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#.
Aprende más sobre IronPDF, 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.
IronPDF se destaca en la conversión de HTML a PDF, asegurando una preservación precisa de los diseños y estilos originales. Es perfecto para crear PDFs a partir de contenido basado en la web, como informes, facturas y documentación. Con soporte para archivos HTML, URLs y cadenas de HTML en bruto, IronPDF produce fácilmente documentos PDF de alta calidad.
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();
// 1. Convert HTML String to PDF
var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");
// 2. Convert HTML File to PDF
var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");
// 3. Convert URL to PDF
var url = "http://ironpdf.com"; // Specify the URL
var pdfFromUrl = renderer.RenderUrlAsPdf(url);
pdfFromUrl.SaveAs("URLToPDF.pdf");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
Cuando se trabaja con archivos de Excel, IronXL Excel Library 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#.
Explore IronOCR, una biblioteca de Reconocimiento Óptico de Caracteres que traduce imágenes en texto buscable. 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.
Descubre 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 implementadas automáticamente.
Modificadores de Acceso
: Ayudan a ajustar 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, incluyendo IronPDF, IronXL, IronOCR e IronBarcode, viene con una prueba gratuita de las herramientas de Iron Software, permitiéndote explorar e integrar estas poderosas bibliotecas en tus proyectos sin ninguna inversión inicial.
Cuando estés listo para comprometerte, las licencias individuales comienzan desde $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.