Indexadores em C#: Faça Objetos Agirem como Arrays
Um indexador permite indexar um objeto como array. Ao definir indexador para classe, ela comporta-se como array virtual. Acessa instância usando operador [ ].
Sintaxe
Indexador unidimensional:
tipo_elemento this[int index]
{
get { return valor_especificado_por_index; }
set { define_valor_especificado_por_index; }
}
Uso de Indexadores
Declaração similar a propriedade. Usam get/set. Diferença: propriedades retornam/definem membro específico; indexadores retornam/definem valor particular da instância — quebram dados em partes indexadas.
Não têm nome; usam palavra-chave this referenciando instância do objeto.
Exemplo Básico
using System;
namespace IndexerApplication
{
class IndexedNames
{
private string[] namelist = new string[size];
static public int size = 10;
public IndexedNames()
{
for (int i = 0; i < size; i++) namelist[i] = "N. A.";
}
public string this[int index]
{
get
{
string tmp = "";
if (index >= 0 && index <= size - 1) tmp = namelist[index];
return tmp;
}
set
{
if (index >= 0 && index <= size - 1) namelist[index] = value;
}
}
static void Main(string[] args)
{
IndexedNames names = new IndexedNames();
names[0] = "Zara";
names[1] = "Riz";
names[2] = "Nuha";
names[3] = "Asif";
names[4] = "Davinder";
names[5] = "Sunil";
names[6] = "Rubic";
for (int i = 0; i < IndexedNames.size; i++)
Console.WriteLine(names[i]);
Console.ReadKey();
}
}
}
Saída:
Zara
Riz
Nuha
Asif
Davinder
Sunil
Rubic
N. A.
N. A.
N. A.
Indexadores Sobrecarregados
Indexadores podem ser sobrecarregados. Podem ter múltiplos parâmetros de tipos diferentes. Índices não precisam ser inteiros; podem ser strings, etc.
Exemplo com Indexador de String
public int this[string name]
{
get
{
int index = 0;
while (index < size)
{
if (namelist[index] == name) return index;
index++;
}
return index;
}
}
Uso
// Primeiro indexador (int)
for (int i = 0; i < IndexedNames.size; i++)
Console.WriteLine(names[i]);
// Segundo indexador (string)
Console.WriteLine(names["Nuha"]); // Saída: 2
Saída adicional: 2 (índice de "Nuha")
Linguagem C
- C# Hello World – Criando Sua Primeira Aplicação C#
- Entendendo Palavras-chave e Identificadores em C#: Regras, Listas e Boas Práticas
- Domine Variáveis e Tipos de Dados Primitivos em C#: Guia Completo
- Operadores em C# – Guia Completo dos Operadores em C#
- Dominando Operadores Bitwise e Bit Shift em C#: Guia Abrangente
- Fundamentos de C#: Essenciais de Entrada e Saída
- Expressões, Instruções e Blocos em C#: Guia Completo com Exemplos Práticos
- Dominando Comentários em C#: Tipos, Boas Práticas e Documentação XML
- Dominando a Instrução Switch em C#: Sintaxe, Exemplos e Boas Práticas
- Operador Ternário em C#: Guia Conciso para Expressões Condicionais