C#索引器的重载和使用代码?
时间: 2024-09-06 22:01:34 浏览: 44
C#中的索引器(Indexers)是一种特殊类型的属性,允许我们通过方括号[]语法访问集合元素,就像数组一样。索引器可以重载,意味着你可以定义多个索引器,每个接受不同的参数组合。这增加了灵活性,可以适应不同类型的数据访问。
重载索引器的基本语法如下:
```csharp
public class MyClass {
// 简单的整数索引器
public int this[int index] { get; set; }
// 可以包含多个参数,如字符串索引
public string this[char key] { get; set; }
// 或者使用更复杂的逻辑,例如获取范围内的元素
public List<int> this[int startIndex, int endIndex] { get; }
}
```
使用索引器示例:
```csharp
MyClass obj = new MyClass();
obj[0] = 5; // 设置整数索引为5
string value = obj['a']; // 获取字符'a'对应的值
List<int> range = obj[1, 3]; // 获取从第1个到第3个元素
```
相关问题
C#索引器的重载代码?
在C#中,虽然标准做法是为一个数据结构提供单一的索引访问方式,但如果真的需要,你可以为不同的键类型编写索引器重载。这通常不是推荐的做法,但在某些特殊场景下是可以的。下面是一个简单的例子,展示了如何为两个不同的键类型(比如`int`和`string`)重载同一个索引器名称:
```csharp
public class MyCollection<T>
{
private Dictionary<T, object> collection;
// 索引器重载 - 用于int类型的键
public object this[int index]
{
get { return collection[index]; }
set { collection[index] = value; }
}
// 另一个索引器重载 - 用于string类型的键
public object this[string key]
{
get { return collection[key]; }
set { collection[key] = value; }
}
}
```
在这里,`this[int index]`和`this[string key]`都指向同一个`Dictionary`,但是它们实际上是不同的方法,针对不同的键类型提供了访问。
阅读全文