Saltar al pie de página
.NET AYUDA

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

Los getters y setters son conceptos esenciales en los 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 una clase. En este tutorial, exploraremos tanto los aspectos básicos como intermedios de los getters y setters privados en C# usando bloques de código.

Introducción a Getters y Setters

¿Qué son Getters y Setters?

En su núcleo, los getters y setters no son más que métodos que permiten acceder a variables privadas en una clase. El getter devuelve el valor de una variable de campo privado, mientras que el setter la modifica. Estos métodos aseguran que los datos internos (campos) de una clase se accedan o modifiquen de manera segura y correcta.

¿Por qué las necesitamos?

Imagínese tener un public class Car con una propiedad private string description. Si alguien fuera de esta clase quiere conocer la descripción, no puede acceder directamente a ella porque es privada. Aquí es donde entran en juego 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 bajo las condiciones que establecemos.

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: Se puede acceder a los campos o propiedades declarados public desde cualquier lugar de su programa. Por ejemplo, es posible que tenga una propiedad public int Age a la que se pueda acceder y modificar desde cualquier parte de su código.
  • Private: Las propiedades o campos declarados private solo pueden accederse dentro de la clase definida, por ejemplo private int age. Esta encapsulación ayuda a prevenir modificaciones no autorizadas y asegura que el estado interno de la clase se mantenga correctamente.

Simple Getter y Setter

Comencemos con un ejemplo simple.

using System;

public class Person
{
    private string name;  // This is a private string name property variable

    // This is the getter
    public string GetName()
    {
        return name;
    }

    // This is the setter
    public void SetName(string newName)
    {
        name = newName;
    }
}

class Program
{
    static void Main()
    {
        Person person = new Person();
        person.SetName("John");
        Console.WriteLine(person.GetName());
    }
}
using System;

public class Person
{
    private string name;  // This is a private string name property variable

    // This is the getter
    public string GetName()
    {
        return name;
    }

    // This is the setter
    public void SetName(string newName)
    {
        name = newName;
    }
}

class Program
{
    static void Main()
    {
        Person person = new Person();
        person.SetName("John");
        Console.WriteLine(person.GetName());
    }
}
$vbLabelText   $csharpLabel

En el class Person anterior, tenemos un captador (GetName) y un definidor (SetName) para la propiedad name. Cuando ejecuta el método static void Main, imprimirá "John" ya que hemos establecido ese valor para el nombre usando el establecedor.

Propiedades implementadas automáticamente

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 brindan una forma abreviada de declarar un private field y su propiedad asociada. Aquí hay un ejemplo:

using System;

public class Student
{
    public string Name { get; set; } // This is an auto-implemented or automatic property
    public string Title { get; set; } // Another auto-implemented property
}

class Program
{
    static void Main()
    {
        Student student = new Student();
        student.Name = "Alice";  // Using setter
        Console.WriteLine(student.Name);  // Using getter
    }
}
using System;

public class Student
{
    public string Name { get; set; } // This is an auto-implemented or automatic property
    public string Title { get; set; } // Another auto-implemented property
}

class Program
{
    static void Main()
    {
        Student student = new Student();
        student.Name = "Alice";  // Using setter
        Console.WriteLine(student.Name);  // Using getter
    }
}
$vbLabelText   $csharpLabel

En la clase Student, la propiedad Name es tanto un captador como un definidor, que se implementan automáticamente. El compilador de C# crea un campo private string name detrás de escena, y la propiedad Name proporciona acceso a ese campo.

Modificadores de acceso avanzados en propiedades

Propiedades de sólo lectura

A veces, puedes querer proporcionar una propiedad que pueda ser leída pero no modificada externamente. Aquí es donde las propiedades de solo lectura son útiles. Puedes omitir el setter en una propiedad para hacerla de solo lectura.

Digamos que queremos agregar una propiedad string Description de solo lectura 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;
    }
}
$vbLabelText   $csharpLabel

En este ejemplo, la propiedad Description solo se puede configurar dentro del constructor de la clase Person. Una vez establecida, no puede ser modificada externamente.

Configuradores privados

A veces, puedes querer permitir que la propiedad sea leída desde fuera de la clase pero que sólo se pueda establecer desde dentro de la clase. Esto se logra utilizando un private set.

using System;

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
    }
}
using System;

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
    }
}
$vbLabelText   $csharpLabel

En class Program, la propiedad Description tiene un private set, lo que significa que no se puede cambiar desde fuera de la clase, lo que garantiza la integridad de los datos.

Herencia y anulación

Al trabajar con clases derivadas, puedes anular los métodos getter y setter para personalizar su comportamiento. Esto te 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;
        }
    }
}
$vbLabelText   $csharpLabel

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

Presentación de Iron Suite para mejorar su desarrollo en C

Iron Suite es una colección de herramientas de esfuerzo de investigación que impulsan significativamente las capacidades de desarrollo en C#. Incluye IronPDF, IronXL, IronOCR, e IronBarcode. Cada una de estas herramientas sirve un propósito único y puede integrarse en varios aspectos de C#.

IronPDF - Una potente herramienta de gestión de PDF

Aprende más sobre IronPDF que es una biblioteca que permite a los desarrolladores crear, leer y editar documentos PDF en C#. Ya sea convirtiendo HTML a PDF o gestionando metadatos de PDF mediante getters y setters, IronPDF te cubre.

IronPDF se destaca en la conversión de HTML a PDF, asegurando la 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 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");
    }
}
$vbLabelText   $csharpLabel

IronXL - Manipulación de Excel hecha fácil

Al trabajar con archivos de Excel, IronXL Excel Library simplifica el proceso de lectura y escritura. Esta herramienta puede ser utilizada para manipular cadenas o enteros privados y públicos de archivos de Excel, de manera similar a cómo podrías manejar datos dentro de una clase usando la misma sintaxis para getters y setters en C#.

IronOCR - Optical Character Recognition in C

Explora IronOCR, una biblioteca de Reconocimiento Óptico de Caracteres que traduce imágenes en texto buscable. Si tu aplicación implica leer texto de documentos escaneados, las potentes capacidades de IronOCR pueden integrarse fácilmente. Puede manejar campos privados y descripciones de cadenas públicas, tal como esperas en una clase Persona o clase Estudiante del ejemplo de configuración anterior.

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

Descubre las funciones de IronBarcode para aplicaciones que requieren lectura y escritura de códigos de barras. Permite tanto el acceso directo a los datos de los códigos de barras como la personalización a través de propiedades automáticas, tal como los getters y setters que se utilizan en la programación con C#.

Iron Suite y Getters y Setters

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

Conclusión

Para resumir:

  1. Getter and Setter: Ayudan a acceder y modificar los campos privados de una clase.
  2. Auto Properties: Una forma elegante de tener captadores y definidores automáticos con la ayuda de propiedades implementadas automáticamente.
  3. Access Modifiers: Ayudan a afinar la accesibilidad de las propiedades.

A estas alturas, deberías tener una sólida comprensión de cómo usar getters y setters en C#.

La suite de herramientas de Iron Suite ofrece una funcionalidad increíble para desarrolladores de C#. Cada uno de estos productos, incluidos IronPDF, IronXL, IronOCR, e IronBarcode, viene con una prueba gratuita de las herramientas de Iron Software, permitiéndote explorar e integrar estas potentes bibliotecas en tus proyectos sin ninguna inversión inicial.

Cuando esté listo para comprometerse, las licencias individuales comienzan desde $799. Si descubres que más de una de estas herramientas se adapta a tus necesidades, puedes aprovechar la oportunidad de comprar el paquete completo de Iron Suite por el precio de sólo dos licencias individuales.

Preguntas Frecuentes

¿Cuál es el propósito de los getters y setters en C#?

Los getters y setters en C# se usan para controlar el acceso a las propiedades privadas de una clase. Los getters recuperan el valor de una propiedad, mientras que los setters permiten modificarla. Esta encapsulación garantiza un acceso seguro y controlado a los datos de la clase.

¿Cómo afectan los modificadores de acceso la visibilidad de las propiedades en C#?

Los modificadores de acceso como public y private determinan la visibilidad y accesibilidad de las propiedades de una clase en C#. Las propiedades public son accesibles desde cualquier lugar, mientras que las propiedades private están restringidas a la clase en la que se declaran.

¿Qué son las propiedades autoimplementadas en C#?

Las propiedades autoimplementadas proporcionan una forma abreviada de declarar propiedades en C#. Permiten definir una propiedad sin escribir explícitamente un campo separado, getter y setter. El compilador crea automáticamente un campo de respaldo para ti.

¿Cómo puedes crear una propiedad de solo lectura en C#?

En C#, puedes crear una propiedad de solo lectura omitiendo el setter en la declaración de la propiedad. Esto significa que la propiedad solo se puede establecer dentro de la clase, como en un constructor, y no puede modificarse externamente.

¿Cómo se usan los setters privados en C#?

Los setters privados en C# permiten que una propiedad se modifique solo dentro de la clase en la que se declara, mientras que el código externo aún puede leer la propiedad. Esto es útil para mantener la integridad de los datos mientras se proporciona acceso controlado.

¿Puedes anular el comportamiento de la propiedad en clases derivadas en C#?

Sí, en C# puedes anular el comportamiento de la propiedad en clases derivadas marcando la propiedad en la clase base como virtual y usando la palabra clave override en la clase derivada. Esto permite la personalización del comportamiento del getter y setter.

¿Cómo puedes convertir HTML a PDF en C#?

Puedes usar el método RenderHtmlAsPdf de IronPDF para convertir cadenas de HTML en PDFs. También puedes convertir archivos HTML a PDFs usando RenderHtmlFileAsPdf.

¿Qué herramientas están disponibles para mejorar el desarrollo en C# con funcionalidades de PDF y código de barras?

La Iron Suite proporciona herramientas como IronPDF e IronBarcode, que mejoran el desarrollo en C# ofreciendo funcionalidades como la gestión de PDFs y la lectura/escritura de códigos de barras. Estas herramientas se integran perfectamente con proyectos en C#.

¿Qué hace que la Iron Suite sea beneficiosa para desarrolladores C#?

La Iron Suite es beneficiosa para desarrolladores C# ya que ofrece una gama de herramientas poderosas que se integran perfectamente con proyectos en C#. Estas herramientas proporcionan funcionalidades avanzadas como gestión de PDFs, manipulación de Excel, capacidades OCR, y lectura/escritura de códigos de barras.

Jacob Mellor, Director de Tecnología @ Team Iron
Director de Tecnología

Jacob Mellor es Director de Tecnología de Iron Software y un ingeniero visionario pionero en la tecnología C# PDF. Como desarrollador original de la base de código principal de Iron Software, ha dado forma a la arquitectura de productos de la empresa desde su creación, ...

Leer más

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me