📅  最后修改于: 2023-12-03 15:00:16.216000             🧑  作者: Mango
在 C# 中,索引器是一种特殊的属性,它允许对象实例被像数组一样索引。比如,我们可以通过 obj[i]
的方式来访问对象中的元素,这个 i
就是索引值。
索引器可以让我们方便地处理像列表、字典等集合数据类型,使得代码更加简洁、易读。
下面是一个简单的示例,演示如何使用索引器来访问对象中的元素。
public class MyList
{
private int[] data; // 存放数据的数组
public MyList()
{
data = new int[10];
}
// 索引器定义
public int this[int index]
{
get
{
return data[index];
}
set
{
data[index] = value;
}
}
}
// 使用示例
MyList list = new MyList();
list[0] = 1;
list[1] = 2;
Console.WriteLine(list[0]); // 输出 1
Console.WriteLine(list[1]); // 输出 2
在上面的示例中,我们定义了一个名为 MyList
的类,其中包含了一个长度为 10 的数组。同时,我们定义了一个索引器 this[int index]
,通过 get
和 set
方法来实现对数组元素的读写。
在 main 函数中,我们创建了一个 MyList
实例,并且可以通过索引器来访问其中的元素。
在实际使用中,我们可以定义多个参数的索引器。比如:
public int this[int x, int y]
{
get { /*...*/ }
set { /*...*/ }
}
这样我们就可以通过 obj[x,y]
的方式来访问对象中的元素。
在 C# 6.0 及之前的版本中,索引器的类型必须是整数类型(int、long、byte 等)。但是在 C# 8.0 中,我们可以通过 System.Index
类型来定义范围索引器。比如:
public int this[Index index]
{
get { /*...*/ }
set { /*...*/ }
}
这样我们就可以通过 obj[0..10]
的方式来访问对象中的元素。
在定义索引器时,我们可以只定义 get
或 set
方法中的一种,这时候另一种方法会默认为空方法。比如:
public int this[int index]
{
get { /*...*/ }
}
这个索引器只允许读取元素,无法写入。
索引器是 C# 中十分实用的特性,在处理集合数据类型时非常方便。通过本文,希望能够让大家深入了解索引器的原理和使用方法。