细谈C#中的索引器跟属性的区别

 细谈C#中的索引器跟属性的区别:
索引器允许您按照与数组的方式对类、结构、接口进行索引。注意要声明类或结构上的索引,一定要使用this关键字

,比如:public int this [int index]
索引器的特点:
1)允许调用对象上的方法,如同对象是一个数组。
2)可以通过索引器进行访问。
3)必须为实例成员。
4)索引器的get访问器具有与索引器相同的行参列表。
5)除了value参数外,索引器的set访问器还具有与索引器相同的行参表。

属性的特点:
1)允许调用方法,如同它们是公共数据成员。
2)可以通过简单的名称进行访问。
3)可以为静态成员或者实例成员。
4)属性的get访问器没有参数。
5)属性的set访问器包含隐式value参数。

举个例子说明如何声明私有数组和索引器,使用索引器访问实例test[i]代码如下:
class IndexerClass
{
 private int[] arr=new int [100];
 public int this[int index]
 {
  get
  {
   if (index<0||index>=100)
   {
    return 0;
   }
   else
   {
    return arr[index];
   }
  }
  set
  {
   if(!(index<0||index>=100))
   {
    arr[index]=value;
   }
  }
 }
}
class MainClass
{
 static void Main()
 {
  IndexerClass test =new IndexerClass();
  test[3]=256;
  test[5]=1024;
  for(int i=0;i<=10;i++)
  {
   System.Console.WriteLine("Element#{0}={1}",i,test[i]);
  }
 }
}
请注意,当计算索引器的访问时(例如,在 Console.Write 语句中),将调用 get 访问器。因此,如果 get 访问器不存在,将发生编译时错误。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/codeshark/archive/2007/11/24/1900699.aspx

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值