理解 C 中的索引器(Indexer)详解与示例

理解 C 中的索引器(Indexer)详解与示例首先 我们定义一个名为 MyCollection 的类 包含一个私有的数组和一个索引器

大家好,欢迎来到IT知识分享网。


在这里插入图片描述

在 C# 中,索引器(Indexer)是一种特殊的属性,允许类的实例像数组一样通过索引访问。索引器使得可以定义类似于数组的访问方式,但是访问的对象可以是类的实例,而不仅限于数组。

1. 索引器的基本概念

索引器允许通过类实例的索引来访问该类的实例成员。它的声明类似于属性,但具有参数。通常情况下,索引器用于允许类的实例像数组一样通过索引进行访问。

2. 索引器的语法

索引器的语法如下所示:

public class MyClass { 
     // 声明一个索引器 public returnType this[indexType index] { 
     get { 
     // 返回索引位置的值 } set { 
     // 设置索引位置的值 } } } 
  • returnType: 索引器返回的数据类型,可以是任意有效的 C# 数据类型。
  • indexType: 索引的参数类型,可以是整数、字符串或其他合法类型。
  • get: 获取索引位置的值的访问器。
  • set: 设置索引位置的值的访问器。

3、索引器示例

下面通过一个简单的示例来演示如何定义和使用索引器。

3.1. 定义一个简单的索引器

首先,我们定义一个名为MyCollection的类,包含一个私有的数组和一个索引器。

public class MyCollection { 
     private int[] items = new int[10]; public int this[int index] { 
     get { 
     if (index >= 0 && index < items.Length) { 
     return items[index]; } else { 
     throw new ArgumentOutOfRangeException("index"); } } set { 
     if (index >= 0 && index < items.Length) { 
     items[index] = value; } else { 
     throw new ArgumentOutOfRangeException("index"); } } } } 

3.2. 使用索引器

接下来,我们创建MyCollection类的实例,并通过索引器访问和修改内部数组元素。

class Program { 
     static void Main(string[] args) { 
     MyCollection collection = new MyCollection(); // 通过索引器设置元素值 collection[0] = 1; collection[1] = 2; collection[2] = 3; // 通过索引器获取元素值 for (int i = 0; i < 3; i++) { 
     Console.WriteLine(collection[i]); } } } 

运行程序,输出结果如下:

1 2 3 

4、索引器进阶

4.1. 多维索引器

C#索引器可以支持多维索引,如下所示:

public class Matrix { 
     private int[,] items = new int[3, 3]; public int this[int row, int col] { 
     get { 
     if (row >= 0 && row < 3 && col >= 0 && col < 3) { 
     return items[row, col]; } else { 
     throw new ArgumentOutOfRangeException("row or col"); } } set { 
     if (row >= 0 && row < 3 && col >= 0 && col < 3) { 
     items[row, col] = value; } else { 
     throw new ArgumentOutOfRangeException("row or col"); } } } } 

4.2. 索引器重载

C#允许对索引器进行重载,如下所示:

public class MyCollection { 
     private int[] items = new int[10]; private string[] strings = new string[10]; public int this[int index] { 
     get { 
     // ... } set { 
     // ... } } public string this[string key] { 
     get { 
     // ... } set { 
     // ... } } } 

5. 索引器的注意事项

  • 索引器可以具有多个参数,但每个参数的类型必须唯一。
  • 索引器的参数可以是值类型或引用类型。
  • 可以根据需要只声明 get 或 set 访问器,但至少必须实现其中一个。

6. 总结

索引器是 C# 中一个强大且灵活的特性,允许类的实例像数组一样通过索引来访问。它提供了一种简洁、直观的方式来管理类的实例数据,特别适用于需要按照索引方式进行访问和修改的场景。

通过本文的介绍和示例,希望读者能够理解并掌握 C# 中索引器的使用方法和基本原理,从而能够在实际项目中灵活运用。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/109680.html

(0)
上一篇 2026-02-05 11:26
下一篇 2026-02-05 11:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信