☰
C# 索引器详解:语法、特性与使用要点
2026/10/27 1:00:58 网站建设 项目流程

索引器(Indexer)是 C# 中一种特殊的成员,它让对象可以像数组一样通过下标访问。索引器在定义形式上与属性相似,但功能和使用方式并不相同:属性通常用于访问对象中的某个字段,而索引器允许调用方以类似访问数组元素的方式访问类或结构的成员。

一、索引器的基本语法

定义索引器的基本语法如下:

<访问修饰符> 类型名称 this[类型名称 参数名] { get { /* 获取值的代码 */ } set { /* 设置值的代码 */ } }

索引器没有像属性和方法那样的独立名称,而是使用this关键字来表明它引用的是当前对象。与属性一样,set访问器中的value关键字代表调用方传入的值。

二、索引器的修饰符与继承行为

和方法一样,索引器支持 5 种访问保护级别:new、public、protected、internal、private;也支持 4 种继承行为修饰符:virtual、sealed、override、abstract,此外还可以定义外部索引器。这些行为与方法没有本质差别。

唯一不同的是,索引器不能声明为静态(static),这是因为索引器依赖于对象实例的引用语义。需要注意的是,在重写(override)实现索引器时,应通过base[E]来访问父类的索引器。

与属性的实现方式一致,索引器的数据类型同时决定了get语句块的返回类型和set语句块中value关键字的类型。

三、索引器的参数列表

索引器的参数列表是理解其用法的关键。“索引”的特征决定了索引器必须至少具备一个参数,该参数位于this关键字之后的中括号内。索引器的参数只能是传值类型,不能使用ref(引用)和out(输出)修饰。参数的数据类型可以是 C# 中的任意数据类型。

C# 会根据不同的参数签名来辨析索引器的多态。中括号内的所有参数在get和set中都可以引用,而value关键字只能在set中作为传递参数使用。

四、定义索引器的注意事项

在实际开发中定义索引器时,应重点注意以下几点:

  1. 所有索引器都使用this关键字取代方法名。类或结构只允许定义一个索引器,并且总是命名为this。
  2. 索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。
  3. get访问器负责返回值,set访问器负责分配值。
  4. this关键字用于定义索引。
  5. value关键字用于定义由set索引器分配的值。
  6. 索引器不一定根据整数值进行索引,可以根据编程需要指定参数类型。
  7. 索引器可以被重载。
  8. 索引器可以有多个形参,例如在访问二维数组时。
  9. 索引器的方括号中可以是任意参数列表。

五、小结

索引器为类型提供了一种直观的下标访问方式,适合封装内部集合或数组的访问逻辑。掌握其语法结构、修饰符限制和参数规则,有助于在实际项目中写出更简洁、更符合直觉的 C# 代码。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询