<分区>
Possible Duplicate:
How do I overload the square-bracket operator in C#?
基本上我想知道是否有一种方法可以实现类似于 SqlDataReader 对象的括号的自定义行为。例如,对于 SqlDataReader 对象,您可以使用索引号“Reader[0]”,这是括号的正常操作,或者您可以提供列名“Reader["id"]”。我知道如何覆盖基本运算符,但似乎找不到与更改括号行为相关的任何信息。
<分区>
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/