c#教程下载|C#教程第十一课:索引指示器

更新时间:2019-08-05 来源:综合 点击:

【www.hzclsc.cn--综合】

本节课将介绍C#的索引指示器,其目的包括:
1.了解什么是索引指示器

2.如何实现索引指示器

3.重载索引指示器

4.了解如何实现多参数的索引指示器

索引指示器并不难使用。它们的用法跟数组相同。在一个类内部,你可以按照你的意愿来管理一组数据的集合。这些对象可以是类成员的有限集合,也可以是另外一个数组,或者是一些复杂的数据结构。不考虑类的内部实现,其数据可以通过使用索引指示器来获得。如下是一个例子:





1.清单 11-1. 索引指示器的例子:IntIndexer.cs




using System;
///
/// A simple indexer example.
///
class IntIndexer
{
private string[] myData;

public IntIndexer(int size)
{
myData = new string[size];
for (int i=0; i




说明
1.清单 11-1演示了如何实现一个索引指示器, IntIndexer类有个名为myData的字符串数组,该数组是私有成员,因而其外部成员是看不见的。该数组是在构造函数中进行初始化的,该构造函数带有一个整型size参数,用来初始化myData数组,初始化时 把单词"empty"作为每个数组元素的值。

2.IntIndexer类的下一成员是索引指示器(Indexer),由关键字this和方括号[int pos]标识出来。该成员带有一个位置参数pos。正如你已经猜测到,Indexer的实现同属性一样。Indexer有get 和set访问操作,就同属性中的用法一样。索引指示器(indexer)返回一个字符串,在定义索引指示器时,string这个类型名标志着其返回类型为字符串类型。

3.Main()方法完成如下事情:初始化一个新的IntIndexer对象,添加一些值,并且打印出结果。其输出结果如下:





Indexer Output

myInd[0]: empty
myInd[1]: empty
myInd[2]: empty
myInd[3]: Another Value
myInd[4]: empty
myInd[5]: Any Value
myInd[6]: empty
myInd[7]: empty
myInd[8]: empty
myInd[9]: Some Value
4.在不少程序语言中,通常都是使用整数作为下标来访问作为数组元素的,但C#的索引指示器不仅能够做到这一点,而且还能够更进一步。 定义索引指示器时,可以带有多个参数,每个参数的类型可以不同。添加的参数由逗号隔开,同方法中的的参数表一样。索引指示器的合法的参数类型包括:整型,枚举类型和字符串。另外,索引指示器也可以被重载。在清单 11-2中,我们修改了前面的程序,以便用来重载索引指示器 ,从而可以接受不同类型的参数。





2.清单 11-2. 重载的索引指示器: OvrIndexer.cs




using System;
///
/// Implements overloaded indexers.
///
class OvrIndexer
{
private string[] myData;
private int arrSize;
public OvrIndexer(int size)
{
arrSize = size;
myData = new string[size];
for (int i=0; i




说明
1.清单 11-2 演示了如何重载索引指示器。

带有整型参数pos的第一个索引指示器同清单11-1中的一样,但是,该程序中有个带有字符串参数的新的索引指示器。对于这个新的索引指示器来说,其get操作返回的是同参数值data相匹配的成员的个数。 Set操作把数组中同参数值匹配的元素值该变为value值。

2.在清单11-2的Main()方法中,演示了重载的索引指示器,它接受字符串参数。

该重载的索引指示器调用了set操作,通过使用下列命令: myInd["empty"] = "no value"; set操作把"no value"值赋给myInd 类中所有的值为"empty"的成员。 myInd类的每个成员都已经输出之后,就把最后一个数据输出到控制台,该数据统计数组成员值为"no value"的个数。 使用如下命令:myInd["no value"],就可调用get操作。输出结果如下:





Indexer Output
myInd[0]: no value
myInd[1]: no value
myInd[2]: no value
myInd[3]: Another Value
myInd[4]: no value
myInd[5]: Any Value
myInd[6]: no value
myInd[7]: no value
myInd[8]: no value
myInd[9]: Some Value

Number of "no value" entries: 7
3.在清单 11-2中,两个索引指示器共处在同一个类中, 这是可以的,因为它们有不同的特征。

一个索引指示器的特征是通过索引指示器参数表中的参数个数和类型表现出来的。类能够辨别出其特征,并调用相应的索引指示器。带有多个参数的索引指示器可以用如下格式来实现:





public object this[int param1, ..., int paramN]
{
get
{
// process and return some class data
}
set
{
// process and assign some class data
}
}
小结
现在你已经了解了索引指示器是用来做什么的,以及其用法。如同数组的用法一样,你可以创建索引指示器来访问类的成员。本文也提到了索引指示器的重载和多参数索引指示器。








本文来源:http://www.hzclsc.cn/anzhuo/20413.html

为您推荐

dnf国服95版本职业排行_dnf起源版本职业排行 dnf国服起源版本职业排行

国服起源版本已经上线了,除了版本的正常更新,大家最关心的,还有自己职业的强弱,小编今天看到了一个起源版本全职业的排行榜,下面大家一起来看一下。 这上下两张图分别是神——三线职业的综合排行,大家可以仔dnf资讯

2020-12-20 07:04:16   dnf普雷版本职业排行   dnf韩服95版本职业排行  

【腾讯游戏信用分是什么意思】腾讯游戏信用分是什么 腾讯游戏信用分查询地址

腾讯游戏信用分是什么?近日,腾讯上线了腾讯游戏信用分功能,这是针对玩家在腾讯游戏中的账号信息、日常活跃、游戏资产、安全贡献、作弊处罚等多维度信息,通过大数据计算综合得出的对玩家游戏信用水平的评分,评分游戏资讯

2020-12-12 11:04:25   腾讯游戏信用分查询   腾讯游戏信用分怎么加   腾讯游戏信用分提升  

[杀戮尖塔手机版]杀戮尖塔上手攻略 杀戮尖塔新手入门技巧

杀戮尖塔(Slay the Spire)是一款综合卡牌与RPG的策略游戏,那么这款游戏有哪些值得注意的技巧呢?下面就来分享一下杀戮尖塔上手攻略。杀戮尖塔新手入门技巧1、菜单 界面 功能目前本作游戏为早策略与战棋

2020-12-11 11:04:12   杀戮尖塔手游   杀戮尖塔吧  

刺客信条起源赛马技巧_刺客信条起源赛马攻略 刺客信条起源赛马技巧

刺客信条起源赛马攻略。刺客信条起源游戏中有一项赛马任务,这个任务有很大几率获得综合第一,玩法也不算很刁专,下面就一起来看看刺客信条起源赛马技巧吧。赛马说简单也简单,说不简单确实也不简单。简单在于很大机角色扮演

2020-12-06 23:05:04   刺客信条起源沙丘中的光芒攻略   刺客信条起源厚皮攻略  

【绝地求生大逃杀枪械皮肤】绝地求生大逃杀最新枪械排行 绝地求生全枪排名一览

绝地求生大逃杀最新枪械排行。所有的枪械均为客观数据和主观大量使用下的感受,与此同时加入了一些职业选手的使用评价综合得出的结论,下面就一起来看看绝地求生全枪排名一览吧。专有词条解读:枪口上跳:俗称后坐力动作射击

2020-12-02 07:04:56   绝地求生大逃杀下载   绝地求生大逃杀官网