请说明在 C# 中如何为类或结构定义带参数的索引器,并解释其使用方法。
考察说明
考查对 C# 索引器语法及参数化用法的理解,以及实际场景中的使用能力。
回答思路
- 【回答框架 1】索引器是一种特殊成员,允许对象像数组一样通过索引访问,使用 this 关键字定义,可带多个参数。语法形式为:public 返回类型 this[参数列表] { get; set; },其中参数类型可以是任意类型,如 int、string 甚至多个参数。
- 【回答框架 2】定义时,get 访问器用于读取指定索引处的值,set 访问器用于赋值,内部逻辑可根据索引参数计算或查找对应数据。例如,用索引器实现一个二维坐标类,通过 this[int x, int y] 访问矩阵元素。
- 【回答框架 3】使用时,通过对象实例后跟方括号传入参数,如 obj[1, 2]。索引器可以重载,即定义多个参数列表不同的索引器。
- 【回答框架 4】与属性相比,索引器没有名称,但在元数据中默认为 Item,可通过 IndexerName 特性修改名称。使用索引器时需注意参数的数量和类型要与定义匹配。
- 【关键点 1】索引器用 this 关键字定义,可带一个或多个参数。
- 【关键点 2】索引器包含 get 和 set 访问器,用于读写操作。
- 【关键点 3】索引器可以被重载,支持多种参数组合。
- 【易错点 1】索引器的 set 访问器可能忽略值,导致数据不一致,需谨慎实现。
- 【易错点 2】多参数索引器的参数顺序容易混淆,应设计清晰。