一什么是索引器
索引器是类的特殊成员,作用只有一个:
让自定义的对象,能像数组/list/字典一样,用[ ]方括号(索引下标)直接取值,赋值
- 知识点归属:C# 面向对象 → 类成员 → 特殊属性 → 索引器
- 存在意义:让自定义类能用
[]语法访问,伪装成数组风格,封装内部查询逻辑,简化调用、统一写法、符合封装思想
二核心语法
示例
1.创建索引器
public class Student { // 私有数组:存储成绩(核心数据) private int[] scores = new int[3]; // 索引器:int 索引 → 读写 int 类型成绩 public int this[int index] { // 取值:obj[0] get { return scores[index]; } // 赋值:obj[0] = 90 set { scores[index] = value; } } }2.使用索引器
class Program { static void Main(string[] args) { // 创建对象 Student stu = new Student(); // 用索引器赋值(和数组一模一样!) stu[0] = 95; stu[1] = 88; stu[2] = 90; // 用索引器取值 Console.WriteLine(stu[0]); // 输出:95 Console.WriteLine(stu[1]); // 输出:88 } }三核心知识总结
✅
int:代表索引器读写的数据类型(这里是成绩,所以是int)✅
this:是索引器的固定关键字,表示 “这个类支持[]访问”✅
[int index]:就是调用时[]里传的参数,你说的 “索引” 完全正确
- 索引器不是方法:是类的成员,和属性、字段同级
- 必须写 this:这是索引器的标志,没有 this 就不是索引器
- 可以只读 / 只写
- 只读:只写
get,不能赋值 - 只写:只写
set,极少用
- 只读:只写
- 支持重载:一个类可以写多个索引器(不同索引类型)
- 和数组的区别
- 数组:系统自带,只能存固定类型
- 索引器:自定义,能加逻辑(比如判断索引是否越界)
- 常用场景:自定义集合类、封装一组数据