如何在C#中重载运算符

我想添加一个运算符到一个类。 我目前有一个GetValue()方法,我想用[]运算符replace。

class A { private List<int> values = new List<int>(); public int GetValue(int index) { return values[index]; } } 
 public int this[int key] { get { return GetValue(key); } set { SetValue(key,value); } } 

我相信这是你正在寻找的东西:

索引器(C#编程指南)

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

[]运算符称为索引器。 您可以提供索引器,这些索引器需要一个整数,一个string或任何其他想要用作键的types。 语法非常简单,遵循与属性访问器相同的原则。

例如,在你的情况下int是键或索引:

 public int this[int index] { get { return GetValue(index); } } 

您还可以添加一组访问器,以便索引器变为读取而不是只读。

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

如果要使用不同types的索引,只需更改索引器的签名即可。

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