索引的声明包括:可选的访问修饰符,返回值的类型,关键字this(不能省略),
和函数参数类似的参数(不过是方括号,而不是函数的圆括号),然后是索引体。
你不能使用静态索引,所以你不能在索引的声明中使用static关键字。
索引可以被声明为虚拟的,因此它可以在它的派生类中被重载。
索引的参数不能使用ref/out型参数。例如:
1Indexer struct StringSection
2}

注意,这里的属性名是this,意思是回引类的当前实例,参数列表包含在方括号而非括号之内。

索引的声明和属性一样:只能含有set/get语句。
    当使用一个索引表达式进行读操作时,索引的get语句自动运行
    当使用一个索引表达式进行写操作时,索引的set语句自动运行

属性和索引器

属性和索引器之间有好些差别:

类的每一个属性都必须拥有唯一的名称,而类里定义的每一个索引器都必须拥有唯一的签名(signature)或者参数列表(这样就可以实现索引器重载)。

属性可以是static(静态的)而索引器则必须是实例成员。

为索引器定义的访问函数可以访问传递给索引器的参数,而属性访问函数则没有参数

接口与索引

接口定义索引器,如IList和 IDictionary集合接口都声明了索引器以便访问其存储的项目。

在为接口声明索引器的时候,记住声明只是表示索引器的存在。你只需要提供恰当的访问函数即可,不必包括范围修饰符。只需定义作因名称,相应的实现方法则应该为该类提供该类的索引器的方法.以下代码把索引器声明为接口IImplement的一部分:

}

下面附上一个例子
Indexerusing System;
Indexer
using System.Collections;
Indexer
//using System.Collections.Generic;
Indexer
using System.Text;
Indexer
namespace ConsoleApplication1
}

输出:
abc
xyz
911
zhoumin
welcome
911
****************************************
ha,ha
ha,ha
ha,ha
null

相关文章:

  • 2022-12-23
  • 2021-08-17
  • 2022-02-03
  • 2021-10-20
  • 2021-07-18
  • 2021-07-04
  • 2021-10-13
  • 2022-12-23
猜你喜欢
  • 2021-08-06
  • 2021-11-28
  • 2018-05-10
  • 2022-12-23
  • 2021-09-21
  • 2021-10-09
  • 2021-12-19
相关资源
相似解决方案