索引符(indexer)是一种特殊的属性,可以把它添加到一个类中,以提供类似于数组的访问。实际上,可通过索引符提供更复杂的访问,因为我们可以用方括号语法来定义和使用复杂的参数类型。它最常见的一个用法 是对项实现简单的数字索引。
可以在Animal对象的Animals集合中添加一个索引符,如下所示:
public class Animals : CollectionBase
{
...
public Animal this[int animallndex]
{
get { return {Animal)List[animalIndex] ; }
Set { List[animalIndex] = value; }
this关键字需要与方括号中的参数一起使用,除此以外,索引符与其他属性十分类似。这个语法是合理的,因为在访问索引符时,将使用对象名,后跟放在方括号中的索引参数(例如MyAnimals[0])。
这段代码对List属性使用了一个索引符(即在IList接口上,可以访问CollectkmBase中的ArrayList,ArrayList存储了项):
return (Animal)List[animallndex];
这里需要进行显式数据类型转换,因为IList.List属性返回一个System.Object对象。注意,我们为这个索引符定义了一个类型。使用该索引符访问某项时,就可以得到这个类型。这种强类型化功能意味着,可以编写下述代码:
animalCollection[0].Feed();
而不是:
((Animal)animalCollection[0]).Feed();
这是强类型化的定制集合的另一个方便特性。
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>