Como faço para sobrecarregar o operador em c #

Eu gostaria de adicionar um operador a uma class. Atualmente, tenho um método GetValue () que gostaria de replace por um operador [].

class A { private List values = new List(); public int GetValue(int index) { return values[index]; } } 

 public int this[int key] { get { return GetValue(key); } set { SetValue(key,value); } } 

Eu acredito que isto é o que você está procurando:

Indexadores (guia de programação C #)

 class SampleCollection { 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 stringCollection = new SampleCollection(); stringCollection[0] = "Hello, World"; System.Console.WriteLine(stringCollection[0]); } } 

O operador [] é chamado de indexador. Você pode fornecer indexadores que usam um inteiro, uma cadeia ou qualquer outro tipo que você queira usar como chave. A syntax é direta, seguindo os mesmos princípios que os acessadores de 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 acessador definido para que o indexador seja lido e gravado em vez de apenas leitura.

 public int this[int index] { get { return GetValue(index); } set { SetValue(index, value); } } 

Se você quiser indexar usando um tipo diferente, basta alterar a assinatura do indexador.

 public int this[string index] ... 
  public int this[int index] { get { return values[index]; } }