IRONSOFTWAREHOME
ACTUALIZACIONES PARA DESARROLLADORES

C# Indexadores (Cómo Funciona para Desarrolladores)

Jacob Mellor, Director de Tecnología @ Team Iron
Jacob Mellor
Updated: 19 de julio de 2026

Un indexador en C# es un tipo especial de propiedad que permite que las instancias de una clase o struct sean accedidas utilizando el operador de acceso de matriz []. Los indexadores pueden ser muy útiles para crear "matrices inteligentes" o encapsular datos en una sintaxis simplificada. Proporcionan una manera de usar instancias de una clase igual que usarías matrices, donde puedes acceder a los datos a través de un índice. Este artículo explorará cómo declarar y usar indexadores de C# con ejemplos prácticos. Y también exploraremos la biblioteca IronPDF al final del artículo.

Sintaxis básica del indexador

Un indexador es un miembro de instancia que utiliza la palabra clave this en una clase o struct, seguido de la declaración del indexador. También especificas los tipos de parámetros y el tipo de retorno. La sintaxis general para un miembro de instancia del indexador se ve así:

public return_type this[parameter_type index]
{
    get
    {
        // Code to return data
    }
    set
    {
        // Code to set data
    }
}

Aquí, return_type es el tipo de valor que el indexador devolverá, como un valor entero, y parameter_type es el tipo del índice, a menudo un int. El accesor get devuelve el valor en el índice especificado, y el accessor de código de bloque set asigna un valor a ese índice.

Declaración y uso del indexador

Examinaremos una ilustración básica de cómo implementar un indexador dentro de una clase de C#. Considere una clase Program que encapsula un array de cadenas.

class Program
{
    private string[] values = new string[5]; // Array with 5 elements
    public string this[int index]
    {
        get
        {
            return values[index];
        }
        set
        {
            values[index] = value;
        }
    }
}

En el código anterior:

  • La clase Program contiene un array de cadenas llamado values.
  • El string this[int index] es la declaración del indexador, donde el int index es la propiedad indexada parametrizada utilizada para acceder a los elementos del array.
  • El accesor get devuelve el valor indexado en el índice especificado, y el accesor set asigna un valor indexado a ese índice.

Esto significa que puede crear una instancia de la clase Program y acceder a su array values usando el indexador, de esta manera:

class Program
{
    static void Main()
    {
        Program program = new Program();
        // Set values using indexer
        program[0] = "First";
        program[1] = "Second";
        // Access values using indexer
        Console.WriteLine(program[0]); // Output: First
        Console.WriteLine(program[1]); // Output: Second
    }
}

En este código, observa que el indexador proporciona una sintaxis simple para acceder al array values, similar a cómo accedería a los elementos en un array.

Comprendiendo los Accesores get y set

Los accesores get y set dentro del indexador son como un código de bloque que le permite recuperar y asignar datos de manera similar a como lo haría con las propiedades. La principal diferencia es que los indexadores utilizan un parámetro de índice para trabajar con colecciones de datos en lugar de miembros de datos individuales.

El bloque get es responsable de devolver los datos en el índice especificado, mientras que el bloque set asigna datos al índice especificado. Aquí hay otro ejemplo para solidificar tu comprensión:

class StudentRecords
{
    private string[] studentNames = new string[3];
    public string this[int index]
    {
        get
        {
            if (index >= 0 && index < studentNames.Length)
            {
                return studentNames[index];
            }
            return "Invalid Index";
        }
        set
        {
            if (index >= 0 && index < studentNames.Length)
            {
                studentNames[index] = value;
            }
        }
    }
    public int Length
    {
        get { return studentNames.Length; }
    }
}

En este ejemplo:

  • La clase StudentRecords tiene un array privado string[] studentNames que contiene los nombres de los estudiantes.
  • El indexador verifica si el índice está dentro de los límites de la matriz antes de establecer o recuperar el valor.
  • Una propiedad de tipo int Length proporciona acceso a la longitud del array.

Puede usar esta clase en el método Main de la siguiente manera:

class Program
{
    public static void Main()
    {
        StudentRecords records = new StudentRecords();
        // Set values using indexer
        records[0] = "John";
        records[1] = "Jane";
        records[2] = "Bob";
        // Access values using indexer
        for (int i = 0; i < records.Length; i++)
        {
            Console.WriteLine(records[i]);
        }
    }
}

Creación de un indexador genérico

También puedes crear clases genéricas con indexadores, permitiendo que tu código maneje múltiples tipos de datos. Aquí hay un ejemplo simple de una clase genérica con un indexador genérico:

class GenericClass<t>
{
    private T[] elements = new T[5];
    public T this[int index]
    {
        get
        {
            return elements[index];
        }
        set
        {
            elements[index] = value;
        }
    }
    public int Length
    {
        get { return elements.Length; }
    }
}

En este código:

  • La clase GenericClass define un indexador que puede trabajar con cualquier tipo de datos.
  • El indexador this[int index] le permite acceder a los elementos en el array, independientemente del tipo.

Ahora puede usar el GenericClass con diferentes tipos de datos en el método Main:

class Program
{
    public static void Main()
    {
        GenericClass<int> intArray = new GenericClass<int>();
        intArray[0] = 10;
        intArray[1] = 20;

        GenericClass<string> stringArray = new GenericClass<string>();
        stringArray[0] = "Hello";
        stringArray[1] = "World";

        // Output the integer array values
        for (int i = 0; i < intArray.Length; i++)
        {
            Console.WriteLine(intArray[i]);
        }

        // Output the string array values
        for (int i = 0; i < stringArray.Length; i++)
        {
            Console.WriteLine(stringArray[i]);
        }
    }
}

Usando IronPDF con el Indexador C#

Indexadores en C# (Cómo Funciona Para Desarrolladores): Figura 1 - IronPDF

IronPDF es una biblioteca de C# diseñada para generar, editar y convertir PDFs en aplicaciones .NET. Simplifica el trabajo con PDFs para los desarrolladores para crear PDFs desde HTML, manipular archivos PDF y manejar funcionalidades avanzadas como combinar, imprimir y agregar firmas programáticamente.

Puedes aprovechar IronPDF dentro de tus programas de C# que utilizan indexadores para generar y gestionar contenido PDF dinámicamente. Por ejemplo, supongamos que tienes una clase que contiene cadenas HTML, y quieres generar PDFs para cada entrada HTML usando un indexador. Este enfoque simplifica la generación de PDFs mientras mantiene tu código organizado e intuitivo.

using IronPdf;
using System;

class PdfGenerator
{
    private string[] htmlTemplates = new string[3];
    public string this[int index]
    {
        get { return htmlTemplates[index]; }
        set { htmlTemplates[index] = value; }
    }

    public void GeneratePdf(int index, string outputPath)
    {
        var renderer = new ChromePdfRenderer();
        var pdfDocument = renderer.RenderHtmlAsPdf(this[index]); // Access HTML string using indexer
        pdfDocument.SaveAs(outputPath);
    }
}

class Program
{
    public static void Main()
    {
        PdfGenerator pdfGen = new PdfGenerator();
        // Populate HTML templates
        pdfGen[0] = "<h1>First Document</h1><p>This is the first PDF.</p>";
        pdfGen[1] = "<h1>Second Document</h1><p>This is the second PDF.</p>";
        pdfGen[2] = "<h1>Third Document</h1><p>This is the third PDF.</p>";

        // Generate PDFs using the indexer
        pdfGen.GeneratePdf(0, "first.pdf");
        pdfGen.GeneratePdf(1, "second.pdf");
        pdfGen.GeneratePdf(2, "third.pdf");

        Console.WriteLine("PDFs generated successfully.");
    }
}

Indexadores en C# (Cómo Funciona Para Desarrolladores): Figura 2 - Salida de Consola

Conclusión

Los indexadores de C# son una característica útil que te ayuda a que tus clases y estructuras se comporten como matrices. Al proporcionar una sintaxis simplificada y acceso flexible a los datos, puedes crear un código más intuitivo y legible. Ya sea que estés trabajando con cadenas, enteros o cualquier otro tipo de datos, los indexadores te dan la capacidad de encapsular tu estructura de datos y acceder a ella usando índices de manera clara y eficiente.

IronPDF hace que sea fácil comenzar con una prueba gratuita que te da acceso a todas las funciones que necesitas para crear, manipular y renderizar PDFs. Puede tomarse su tiempo explorando el software, y una vez que esté satisfecho, las licencias están disponibles a partir de $999.

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, transformándola, junto con el director ejecutivo Cameron Rimington, en una empresa de más de 50 personas que presta servicios a la NASA, Tesla y organismos gubernamentales de todo el mundo.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuenta
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta