C# 索引器

以下为个人理解,不喜勿喷:

索引器主要包含三个知识点:

1.索引器是针对于数组的属性

C#中属性是针对于字段的,通过set和get限制字段的访问与赋值。

同样,索引器也具有set和get,可以通过set和get限制对数组的访问与赋值。

2.索引器能够建立类与类内数组的索引

为便于解释,我们先建立一个包含数组a和b的类c

class C
{ public int[]a=new int[5];
  public int[]b=new int[5];
  public int this[int index]
    {
      get{return a[index];}
      set{a[index]=value;}
    }
}

在没有建立索引器时,要访问a[1]我们需要c.a[0],但在建立索引器之后,我们可以通过c[0]直接访问a[0],代码中建立了数组a与类c的索引,需要注意的是,我们可以建立a与c的索引,也可以建立b与c的索引,但是不能同时建立a,b与c的索引(这也很好理解,假定同时建立了a,b与c的索引,那么c[0]代表的是a[0]还是b[0]呢?)

3.索引器可以重载

private string[] namelist = new string[size];
public string this[int index]
      {
         get
         {
            string tmp;

            if( index >= 0 && index <= size-1 )
            {
               tmp = namelist[index];
            }
            else
            {
               tmp = "";
            }

            return ( tmp );
         }
         set
         {
            if( index >= 0 && index <= size-1 )
            {
               namelist[index] = value;
            }
         }
      }
      public int this[string name]
      {
         get
         {
            int index = 0;
            while(index < size)
            {
               if (namelist[index] == name)
               {
                return index;
               }
               index++;
            }
            return index;
         }

      }

代码摘自菜鸟教程-C#教程-C#索引器-重载索引器,网址:C# 索引器(Indexer) | 菜鸟教程 (runoob.com)

这个例子(只放了索引器和数组)中就重载了索引器,使访问时既可以c[0]通过索引号0访问,也可以通过c["name"]索引值访问。

另外,索引器还可以多参,似乎多个也是用来指定访问的,类似于重载中提到的,多参我也不太懂,就不写了。

还有一个问题就是:一个类只能与一个数组建立索引吗?即使有多个不同类型的数组存在?

希望大佬帮忙解答一下,感谢。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

又菜又爱编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值