山海人工智能信息网

07月01日索引器是什么(索引器)

导读 大家好,小尧来为大家解答以上问题。索引器是什么,索引器很多人还不知道,现在让我们一起来看看吧!1、索引器索引器的两个用法和功能允许...

大家好,小尧来为大家解答以上问题。索引器是什么,索引器很多人还不知道,现在让我们一起来看看吧!

1、索引器索引器的两个用法和功能允许你以数组的方式索引类、结构或接口。有关将索引器用于接口的更多信息,请参见接口索引器

2、若要在类或结构上声明索引器,请使用此关键字,如下面的示例所示:

3、复制代码public int this[int index]//索引器声明{//get和set accessors}

4、索引器类型及其参数类型必须至少像索引器本身一样可访问。有关可访问性级别的更多信息,请参见访问修饰符。

5、索引器签名包括其形式参数的数量和类型。它不包括索引器类型或形参名称。如果在同一个类中声明了多个索引器,它们必须有不同的签名。

6、索引器值不归类为变量;因此,索引器值不能作为ref或out参数传递。

7、要为索引器提供一个可以在其他语言中使用的名称,请在声明中使用name属性。例如:

8、复制代码[系统。runtime.compiler services . cs harp . indexer name(' item ')]public int this[int index]//索引器声明{}

9、这个索引器将被命名为TheItem。未提供名称属性将生成项目的默认名称。

10、1示例说明以下示例说明了如何声明私有数组字段,arr和索引器使用索引器直接访问实例test[i]。使用索引器的另一种方法是将数组声明为公共成员,并直接访问其成员arr[i]。

11、C#复制代码类索引器类{ private int[]arr=new int[100];public int this[int index] //索引器声明{ get { //检查索引限制。if(index 0 | | index=100){ return 0;} else { return arr[index];} }设置{ if(!(索引0 ||索引=100)){ arr[索引]=值;} } }}

12、class Main class { static void Main(){ indexer class test=new indexer class();//调用索引器初始化元素#3和#5。测试[3]=256;测试[5]=1024;for(int I=0;i=10i ) {系统。console . WriteLine(' Element # { 0 }={ 1 } ',I,test[I]);} }}

13、输出元素#0=0

14、元素#1=0

15、元素#2=0

16、元素#3=256

17、元素#4=0

18、元素#5=1024

19、元素#6=0

20、元素#7=0

21、元素#8=0

22、元素#9=0

23、元素#10=0

24、注意,在计算索引器的访问权限时(例如,在控制台中。Write语句),将调用get访问器。因此,如果get访问器不存在,将会发生编译时错误。

25、使用其他值来索引C#不会将索引类型限制为整数。例如,对索引器使用字符串可能是有用的。这种索引器可以通过在集合中搜索字符串并返回相应的值来实现。因为访问器可以重载,所以字符串和整数版本可以共存。

26、2示例说明在这个示例中,声明了存储星期几的类。声明一个get访问器,它接受一个字符串(日名称)并返回相应的整数。例如,星期日将返回0,星期一将返回1,以此类推。

27、code # copy code//使用字符串作为索引器值类day collection { string[]days={ ' sun ',' mon ',' tues ',' wed ',' thumbs ',' fri ',' sat ' };

28、//此方法查找日期或返回-1 private int GetDay(string test day){ int I=0;foreach(string day in days){ if(day==test day){ return I;}我;} return-1;}

29、//get访问器返回给定字符串public int this[string day]{ get { return(GetDay(day));} }}

30、类程序{ static void Main(string[]args){ day collection week=new day collection();系统。console . WriteLine(week[' Fri ']);系统。console . WriteLine(week[' Made-ed Day ']);}}

31、5输出

32、-1

33、通过可靠地编程来提高索引器的安全性和可靠性有两种主要方法:

34、当从索引器,访问的任何缓冲区或数组中设置和检索值时,请始终确保您的代码执行范围和类型检查。

35、您应该为get和set访问器的可访问性设置尽可能多的限制。这对于set访问器尤其重要。有关更多信息,请参见非对称访问器可访问性(C#编程指南)。

本文到此结束,希望对大家有所帮助。