# 索引器 概念: - 索引器(Indexer)可以让对象像数组一样通过 `[]` 访问 - 它很像属性,只是访问器带参数 - 一般用一个数组和索引器写法来实现按照下标访问成员 通常用法: - 封装内部数组或集合 - 让类的使用方式更自然 语法: ```csharp 访问修饰符 返回值类型 this[参数列表] { get { } set { } } ``` 案例: ```csharp class Team { private string[] members = new string[3]; public string this[int index] { get { return members[index]; } set { members[index] = value; } } } Team team = new Team(); team[0] = "小明"; Console.WriteLine(team[0]); ``` 补充: - 索引器也可以只有 `get`,做成只读 - 索引器也可以有多个参数,比如 `this[int row, int col]` 注意: 1. 索引器写法里的名字固定是 `this`,不是自定义名字 2. 索引器本质上还是类成员,不是数组本身 3. `[]` 不是直接重载出来的,==而是通过索引器语法提供的== 4. 如果内部是真实数组或列表,通常还要自己考虑越界问题 #封装 #核心