您的位置:首页 > 编程语言 > C#

C#基础之索引器——Indexer

2007-08-17 09:07 405 查看
索引器是C#引入的一个新的类型成员。估且不说它到底是什么,我们先来看下面一个向量集合类的代码:

namespace XiaomiExample
//a、b、c、da是四个Vector的实例
VectorCollection vectors = new VectorCollection();
vectors.Add(a);
vectors.Add(b);
vectors.Add(c);
vectors.Add(da);
vectors.RemoveAt(3);//移除第4条向量
Response.Write("<br />" + vectors.ToString());
看到这里,你可能觉得这样的代码并没有什么奇怪的。而且,结果也很正常的输出了4-1条向量。但是,如果要求接着再输出第三要记录,要如何写代码?呵呵,恐怕代码会是这样子的:

Response.Write("<br />" + vectors.Vectors[2].ToString());
重新看一下这一句代码,是不是觉得怪怪的?vectors就是向量集,为什么要取它的Vectors[2]才能输出第三条向量呢?但是,根据当前的代码分析,这也没有什么奇怪的:实质上,所有的向量都是存储在_vectors这个List<Vector>里的,而它又是通过Vectors属性暴露出来的。无论如何,这样子的代码给人感觉很不爽,于是,有人发明的一个东东,叫“索引器”^_^,它有点儿像属性,又可以让我们像访问字典一样的访问对象。这样说可能有点儿抽象,还是来看具体的例子好了。
首先,我们明确一下要达到的最终目标,希望把上面那一句改成如下形式:

Response.Write("<br />" + vectors[2].ToString());
嗯,好看多了。但是,要实现这样的目标,需要对VectorCollection作一个小小的修改,即加上索引器,我们添加如下代码到VectorCollection类:

public Vector this[int index]
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
using System.Collections.Generic;

namespace XiaomiExample
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: