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
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
相关文章推荐
- C#基础之字段(Field)、属性(Properties)和索引器(Indexer)
- C#基础--索引器
- C#基础-----索引器,静态类,值类型和引用类型
- C#.NET常见问题(FAQ)-索引器indexer有什么用
- C# 索引器(Indexer)
- C#基础——索引器
- c#基础知识学习笔记 - 索引器
- The indexer in C#(C#中的索引器)
- C#梳理【索引器Indexer】
- C# 基础加强(一)可变参数params、索引器
- c#基础知识索引器
- C# 索引器(Indexer)
- [C#基础教程]之快速了解c#中的索引器及与属性区别
- c#基础知识索引器
- C# 索引器(Indexer)
- C#基础 [13] this关键字和索引器
- C#基础回顾(三)—索引器、委托、反射
- c#基础知识学习笔记 - 多个参数的索引器
- c# 索引器基础理论
- c#语言基础(4)----索引器