Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何覆盖或创建括号的自定义行为“;[……”是;在c#中?_C#_.net - Fatal编程技术网

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

如何覆盖或创建括号的自定义行为“;[……”是;在c#中?,c#,.net,C#,.net,可能重复: 基本上,我想知道是否有一种方法可以实现类似于SqlDataReader对象的括号的自定义行为。例如,对于SqlDataReader对象,可以使用索引号“Reader[0]”,这是方括号的正常操作,也可以提供列名“Reader[“id”]”。我知道如何重写基本运算符,但似乎找不到任何与更改括号行为有关的内容。您需要在类型中定义索引器 public class MyType { public string this[int index] { get { swi

可能重复:


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

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

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

谢谢,这正是我想要的。对不起,重复的问题,当我尝试搜索[]时,我不断得到奇怪的结果。