Como faço para sobrecarregar o operador [] em C # [duplicado]
-
05-07-2019 - |
Pergunta
Esta questão já tem uma resposta aqui:
Eu gostaria de adicionar um operador a uma classe. Eu tenho atualmente um método GetValue()
que eu gostaria de substituir com um operador []
.
class A
{
private List<int> values = new List<int>();
public int GetValue(int index)
{
return values[index];
}
}
Solução
public int this[int key]
{
get
{
return GetValue(key);
}
set
{
SetValue(key,value);
}
}
Outras dicas
Eu acredito que este é o que você está procurando:
indexadores (C # guia de programação)
class SampleCollection<T>
{
private T[] arr = new T[100];
public T this[int i]
{
get
{
return arr[i];
}
set
{
arr[i] = value;
}
}
}
// This class shows how client code uses the indexer
class Program
{
static void Main(string[] args)
{
SampleCollection<string> stringCollection =
new SampleCollection<string>();
stringCollection[0] = "Hello, World";
System.Console.WriteLine(stringCollection[0]);
}
}
O operador [] é chamado um indexador. Você pode fornecer indexadores que levam um inteiro, uma string, ou qualquer outro tipo que você deseja usar como uma chave. A sintaxe é simples, seguindo os mesmos princípios que os assessores da propriedade.
Por exemplo, no seu caso, onde um int
é a chave ou índice:
public int this[int index]
{
get
{
return GetValue(index);
}
}
Você também pode adicionar um acessor definido para que o indexador se torna ler e escrever ao invés de apenas só de leitura.
public int this[int index]
{
get
{
return GetValue(index);
}
set
{
SetValue(index, value);
}
}
Se você quiser índice usando um tipo diferente, você apenas muda a assinatura do indexador.
public int this[string index]
...
public int this[int index]
{
get
{
return values[index];
}
}