c# - 如何在 c# 中覆盖或创建括号 "[]"的自定义行为?

标签 c# .net

<分区>

Possible Duplicate:
How do I overload the square-bracket operator in C#?

基本上我想知道是否有一种方法可以实现类似于 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

关于c# - 如何在 c# 中覆盖或创建括号 "[]"的自定义行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9132037/

相关文章:

c#/.NET/Winforms RichTextBox : Highlight active line

.NET EDIFACT/X12 框架

c# - Process.Start 未被识别

c# - Linq:添加额外的 'Where' 子句给出随机结果

java - 在 C# 中解密 AES 加密字符串

c# - Mvvm后退按钮: Page and ViewModel lose command binding

c# - 使用int32.TryParse处理错误

c# - 在 C#/.NET 中执行批量更新的最快方法

c# - 为什么这段代码会抛出异常?我认为 RunWorkerCompleted 可以访问 UI 元素

c# - 如何仅使用 tasks.json 中的一个命令在 VS Code 中构建所有 C# 项目?