高级

索引

预计阅读时间1 分 4 views

C# 索引器

C# Indexers

前言

索引器(Indexer)允许我们像访问数组一样,通过索引访问类的实例。这使得我们可以使用类似于数组的语法来操作类的内部数据,提升代码的可读性和简洁性。

作用

索引器的主要作用包括:

  1. 简化语法:通过索引器,我们可以用简洁的语法来访问类的内部数据,就像使用数组一样。
  2. 封装数据:索引器允许我们在类内部封装数据,并提供对数据的访问方式,而不暴露类的内部实现细节。
  3. 提供灵活的数据访问:可以通过索引器访问和修改对象的状态,使得类的设计更加灵活。

使用场景

  1. 简化数据访问:当类的内部数据结构需要以类似数组的方式访问时,使用索引器可以简化代码。
  2. 封装和保护数据:可以通过索引器封装数据,提供更受控的访问方式。
  3. 实现复杂的数据存取逻辑:在类中实现索引器,可以让我们自定义数据的获取和设置逻辑。

示例

  1. 示例 1:基本索引器
using System;

class Program
{
    // 声明一个数组以存储元素
    private string[] studentName = new string[10];

    // 定义一个索引器
    public string this[int index]
    {
        get
        {
            // 返回存储在 studentName 数组中的值
            return studentName[index];
        }

        set
        {
            // 将值赋给 studentName
            studentName[index] = value;
        }
    }

    public static void Main()
    {
        // 创建 Program 类的实例
        Program obj = new Program();

        // 使用索引器在 obj[] 中插入值,即通过索引位置
        obj[0] = "张三";
        obj[1] = "李四";
        obj[2] = "王五";

        Console.WriteLine("obj 中的第一个元素: " + obj[0]);
        Console.WriteLine("obj 中的第二个元素: " + obj[1]);
    }
}

输出

obj 中的第一个元素: 张三
obj 中的第二个元素: 李四

在这个示例中,我们定义了一个 studentName 数组,并通过索引器 this[int index] 访问和修改数组中的元素。我们通过 obj 实例像使用数组一样访问 studentName 中的元素。

  1. 示例 2:泛型索引器
using System;

class EmployeeInfo<T>
{
    // 声明一个数组以存储元素
    private T[] employee = new T[50];

    // 定义一个索引器
    public T this[int index]
    {
        get
        {
            // 返回存储在 employee 数组中的值
            return employee[index];
        }

        set
        {
            // 将值赋给 employee
            employee[index] = value;
        }
    }
}

class Program
{
    public static void Main()
    {
        // 创建一个 int 类型的 EmployeeInfo 类实例
        EmployeeInfo<int> Id = new EmployeeInfo<int>();

        // 使用索引器在 Id[] 中插入整数值,即通过索引位置
        Id[0] = 3;
        Id[1] = 23;
        Id[2] = 10;

        Console.WriteLine("Id 对象中的第一个元素: " + Id[0]);

        // 创建一个 string 类型的 EmployeeInfo 类实例
        EmployeeInfo<string> Name = new EmployeeInfo<string>();

        // 使用索引器在 Name[] 中插入字符串值,即通过索引位置
        Name[0] = "张三";
        Name[1] = "李四";
        Name[2] = "王五";

        Console.WriteLine("Name 对象中的第一个元素: " + Name[0]);
    }
}

输出

Id 对象中的第一个元素: 3
Name 对象中的第一个元素: 张三

在这个示例中,我们定义了一个泛型索引器 T,允许我们在 EmployeeInfo<T> 类中使用不同的数据类型。我们创建了 intstring 类型的 EmployeeInfo 类实例,并通过索引器访问和修改数据。

结语

索引器是 C# 中一个强大的特性,它简化了对象内部数据的访问方式,使得类的使用更加直观和方便。通过使用索引器,我们可以像操作数组一样操作类的实例数据,从而提升代码的可读性和维护性。

Leave a Comment

分享此文档

索引

或复制链接

内容