IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

Indexadores em C# (Como funcionam para desenvolvedores)

Curtis Chau
Curtis Chau
Updated: 19 de julho de 2026

Um indexador em C# é um tipo especial de propriedade que permite que instâncias de uma classe ou estrutura sejam acessadas usando o operador de acesso a array []. Os indexadores podem ser muito úteis na criação de "matrizes inteligentes" ou no encapsulamento de dados em uma sintaxe simplificada. Elas fornecem uma maneira de usar instâncias de uma classe da mesma forma que você usaria arrays, onde você pode acessar os dados por meio de um índice. Este artigo explorará como declarar e usar indexadores em C# com exemplos práticos. E também exploraremos a biblioteca IronPDF no final do artigo.

Sintaxe básica do indexador

Um indexador é um membro de instância usando a palavra-chave this em uma classe ou estrutura, seguido pela declaração do indexador. Você também especifica os tipos de parâmetros e o tipo de retorno. A sintaxe geral para um membro de instância de indexador é a seguinte:

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

Aqui, return_type é o tipo de valor que o indexador retornará, como um valor inteiro, e parameter_type é o tipo do índice, frequentemente um int. O acessor get retorna o valor no índice especificado, e o acessor de bloco de código set atribui um valor a esse índice.

Declaração e uso do indexador

Vamos examinar uma ilustração básica de como implementar um indexador dentro de uma classe C#. Considere uma classe Program que encapsula um array de strings.

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

No código acima:

  • A classe Program contém um array de strings chamado values.
  • O string this[int index] é a declaração do indexador, onde o int index é a propriedade parametrizada pelo índice usada para acessar elementos do array.
  • O acessor get retorna o valor indexado no índice especificado, e o acessor set atribui um valor indexado a esse índice.

Isso significa que você pode criar uma instância da classe Program e acessar seu array values usando o indexador, assim:

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
    }
}

Neste código, você vê que o indexador fornece uma sintaxe simples para acessar o array values, semelhante a como você acessaria elementos em um array.

Compreendendo os Acessores get e set

Os acessores get e set dentro do indexador são como blocos de código que permitem que você recupere e atribua dados de maneira semelhante a como faria com propriedades. A principal diferença é que os indexadores usam um parâmetro de índice para trabalhar com coleções de dados em vez de membros de dados individuais.

O bloco get é responsável por retornar os dados no índice especificado, enquanto o bloco set atribui dados ao índice especificado. Aqui está outro exemplo para consolidar seu entendimento:

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

Neste exemplo:

  • A classe StudentRecords tem um vetor string[] studentNames privado que contém os nomes dos alunos.
  • O indexador verifica se o índice está dentro dos limites da matriz antes de definir ou recuperar o valor.
  • Uma propriedade de tipo int Length fornece acesso ao comprimento do array.

Você pode usar esta classe no método Main da seguinte maneira:

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]);
        }
    }
}

Criando um Indexador Genérico

Você também pode criar classes genéricas com indexadores, permitindo que seu código manipule vários tipos de dados. Aqui está um exemplo simples de uma classe genérica com um 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; }
    }
}

Neste código:

  • A classe GenericClass define um indexador que pode trabalhar com qualquer tipo de dado.
  • O indexador this[int index] permite que você acesse os elementos no array, independentemente do tipo.

Agora você pode usar o GenericClass com diferentes tipos de dados no 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 com o Indexador C#

Indexadores C# (Como Funciona para Desenvolvedores): Figura 1 - IronPDF

IronPDF é uma biblioteca C# projetada para gerar, editar e converter PDFs em aplicações .NET . Simplifica o trabalho com PDFs para desenvolvedores, permitindo criar PDFs a partir de HTML , manipular arquivos PDF e lidar com funcionalidades avançadas, como mesclagem, impressão e adição de assinaturas, de forma programática.

Você pode aproveitar o IronPDF em seus programas C# que utilizam indexadores para gerar e gerenciar conteúdo PDF dinamicamente. Por exemplo, suponha que você tenha uma classe que armazena strings HTML e queira gerar PDFs para cada entrada HTML usando um indexador. Essa abordagem simplifica a geração de PDFs, mantendo seu 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 C# (Como Funciona para Desenvolvedores): Figura 2 - Saída do Console

Conclusão

Os indexadores em C# são um recurso útil que ajuda a fazer com que suas classes e structs se comportem como arrays. Ao fornecer uma sintaxe simplificada e acesso flexível aos dados, você pode criar um código mais intuitivo e legível. Quer você esteja trabalhando com strings, números inteiros ou qualquer outro tipo de dado, os indexadores permitem encapsular sua estrutura de dados e acessá-la de forma limpa e eficiente usando índices.

O IronPDF facilita o início com um período de teste gratuito que lhe dá acesso a todos os recursos necessários para criar, manipular e renderizar PDFs. Você pode levar o tempo que precisar explorando o software, e uma vez que estiver satisfeito, as licenças estão disponíveis a partir de $999.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.