C# —— 索引器(Indexer)

索引器 (Indexer) 是 C# 中的一种特殊成员,为类添加一个可以通过索引去获取元素的方式,允许对象像访问数组那样通过索引来进行访问。索引器使得可以定义类似于数组的访问方式,但是访问的对象可以是类的实例,而不仅限于数组。

主要特点:

关键字: 索引器的关键字this

访问性: 可以使用不同的访问修饰符

类型:索引器可以接受多个参数并返回任意数据类型。

重载:可以为同一类定义多个索引器,使其能够根据不同的参数来访问不同类型的数据。

索引器的语法: 

如图所示:

class MyTest
{
    // 声明一个索引器
    public People this[int index] 
    {
        get
        {
           // 返回值
        }
        set 
        {
           // 返回值
        }
    }
}

可使用 get 和 set 访问器来定义索引器。但是,属性返回或设置一个特定的数据成员,而索引器返回或设置对象实例的一个特定值。换句话说,它把实例数据分为更小的部分,并索引每个部分,获取或设置每个部分。 

定义索引器:

class MyTest
{
    
    public List<People> Lists = new List<People>(); // 创建一个数组 存储People类对象
    public void Add(People p)
    {
        Lists.Add(p);
    }


    // 给类添加索引器: 添加一个this[int index]属性,这个属性类型是集合里面存储的类型
    //public People this[int index]
    public People this[int index] // 内部 使用this[0], 类的外部MyTest[0]
    {
        get
        {
            Console.WriteLine("www");
            if (index > Lists.Count-1)
            {
                throw new Exception("数组越界");
            }
            return Lists[index]; // 取出对应的元素
        }
        set // 设置数据
        {
            Console.WriteLine("11111");
            Lists[index] = value;
        }
    }


    
}

索引器重载:

索引器(Indexer)可被重载。索引器声明的时候也可带有多个参数,且每个参数可以是不同的类型。没有必要让索引器必须是整型

public People this[string index]
{
    get
    {
        for (int i = 0;i < Lists.Count; i++)
        {
            if (Lists[i].Name == index)
            {
                return Lists[i];
            }
        }

        return null;

    }
    set
    {
        for (int i = 0; i < Lists.Count; i++)
        {
            if (Lists[i].Name == index)
            {
                Lists[i] = value;
                break;
            }
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值