如何覆盖或创建括号的自定义行为“;[]”;在c#中

本文关键字:自定义 覆盖 何覆盖 创建 | 更新日期: 2023-09-27 18:22:19

可能重复:
如何重载C#中的方括号运算符?

基本上,我想知道是否有一种方法可以实现类似于SqlDataReader对象的方括号的自定义行为。例如,对于SqlDataReader对象,可以使用索引号"Reader[0]",这是方括号的正常操作,也可以提供列名"Reader["id"]"。我知道如何覆盖基本运算符,但似乎找不到任何与更改括号行为有关的内容。

如何覆盖或创建括号的自定义行为“;[]”;在c#中

您需要在类型中定义一个索引器

public class MyType {
  public string this[int index] {
    get { 
      switch (index) {
        case 1: return "hello";
        case 2: return "world";
        default: return "not found";
      }
    }
    set { ... }
  }
}
MyType t = ...;
Console.WriteLine(t[0]);  // hello
Console.WriteLine(t[1]);  // world