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

来源:互联网 发布:中国交通事故2016数据 编辑:程序博客网 时间:2024/05/17 23:47

细谈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 访问器不存在,将发生编译时错误。

 
原创粉丝点击