索引

在C#中,自定义索引(Custom Indexers)是指允许对象像数组一样,通过索引访问其中的元素。自定义索引器为类、结构或接口提供了类似数组的语法,但其行为和存储方式可以根据需要自定义。

自定义索引器的定义

索引器的定义类似于属性(Property),但使用 this 关键字来定义,并且接受一个或多个参数来表示索引。其语法如下:

public class MyClass
{
    private Dictionary<int, string> _data = new Dictionary<int, string>();

    public string this[int index]
    {
        get
        {
            if (_data.ContainsKey(index))
            {
                return _data[index];
            }
            else
            {
                return "Index out of range";
            }
        }
        set
        {
            _data[index] = value;
        }
    }
}

使用索引器

定义了索引器后,就可以像访问数组那样来访问对象的元素了

MyClass myObject = new MyClass();
myObject[0] = "Hello";
myObject[1] = "World";

Console.WriteLine(myObject[0]);  // 输出 "Hello"
Console.WriteLine(myObject[1]);  // 输出 "World"

多参数索引器

索引器不仅可以接受一个参数,还可以接受多个参数

public class Matrix
{
    private int[,] _matrix = new int[10, 10];

    public int this[int row, int col]
    {
        get { return _matrix[row, col]; }
        set { _matrix[row, col] = value; }
    }
}

使用时,可以传入两个参数来访问矩阵的元素:

Matrix matrix = new Matrix();
matrix[0, 0] = 1;
matrix[1, 2] = 5;

Console.WriteLine(matrix[0, 0]);  // 输出 "1"
Console.WriteLine(matrix[1, 2]);  // 输出 "5"
  • 访问修饰符:索引器可以有 getset 访问器,也可以选择性地实现只读或只写索引器。
  • 索引类型:索引器的参数可以是任意类型,不一定是整数。你可以定义字符串、枚举或其他类型的索引。
  • 多个索引器:同一个类可以定义多个索引器,但它们的参数列表必须不同(即必须有不同的签名)。

索引器非常适合用于类内部表示数据集合的情况,例如数组、列表或字典。在这些情况下,索引器使得代码更加简洁和直观。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容