如何在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]; } }