索引器提供了一种可以让类被当作数组进行访问的方式。在C#中,类索引器是通过this的属性实现的。
index.ToString("D2")将index转换成一个具有两个字符宽度的字符串

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ClassIndexer
{
    /// <summary>
    /// define a class called AClass,which has only one private variable
    /// </summary>
   class AClass {
       private string _name;
       public string Name {
           get { return this._name; }
           set { this._name = value; }
       }
       public AClass(string name) {
           this._name = name;
       }
    }
    /// <summary>
    /// AClassContainer class
    /// </summary>
   class AClassContainer {
       private AClass[] _AClassList;
       public AClassContainer() {
           this._AClassList = new AClass[10];
       }
       public AClassContainer(int cap) {
           this._AClassList = new AClass[cap];
       }
       /// <summary>
       /// class indexer by using int 
       /// </summary>
       /// <param name="index"></param>
       /// <returns></returns>
       public AClass this[int index] {
           get {
               if ((index < 0) || (index > this._AClassList.Length)) return null;
               else return this._AClassList[index];
           }
           set {
               if ((index < 0) || (index > this._AClassList.Length)) return;
               else this._AClassList[index] = value;
           }
       }
       /// <summary>
       /// class indexer by using string
       /// </summary>
       /// <param name="name"></param>
       /// <returns></returns>
       public AClass this[string name] {
           get {
               foreach (AClass cls in this._AClassList) {
                   if (cls.Name == name) return cls;
               }
               return null;
           }
       }
   }
    class Program
    {
        static void Main(string[] args)
        {
            int count = 10;
            AClassContainer classContainer = new AClassContainer(count);
            for (int index = 0; index < count; index++) {
                string name = index.ToString("D2");
                classContainer[index] = new AClass(name);
            }
            for (int index = 0; index < count; index++)
            {
                AClass cls = classContainer[index];
                System.Console.WriteLine("classContainer[{0}].Name=\"{1}\"",index,cls.Name);
            }
            System.Console.WriteLine();
            for (int index = count - 1; index >= 0; index--) {
                string name = index.ToString("D2");
                AClass cls = classContainer[name];
                System.Console.WriteLine("classContainer[{0}].Name=\"{1}\"",name,cls.Name);
            }
            System.Console.ReadLine();
        }
    }
}

结果:
classContainer[0].Name="00"
classContainer[1].Name="01"
classContainer[2].Name="02"
classContainer[3].Name="03"
classContainer[4].Name="04"
classContainer[5].Name="05"
classContainer[6].Name="06"
classContainer[7].Name="07"
classContainer[8].Name="08"
classContainer[9].Name="09"

classContainer[09].Name="09"
classContainer[08].Name="08"
classContainer[07].Name="07"
classContainer[06].Name="06"
classContainer[05].Name="05"
classContainer[04].Name="04"
classContainer[03].Name="03"
classContainer[02].Name="02"
classContainer[01].Name="01"
classContainer[00].Name="00"

最新文章

  1. CSS中强悍的相对单位之em(em-and-elastic-layouts)学习小记
  2. ASP.NET Web API的Controller是如何被创建的?
  3. mysql关键字与自己设置的字段冲突
  4. 在实例中说明java的类变量,成员变量和局部变量
  5. C语言第4天循环,流程控制。
  6. matlab求距一个数最近的奇(偶)数
  7. PCB板简易流程
  8. HW2.4
  9. 再谈javascript原型继承
  10. sql建立跨服务器链接
  11. Spring Boot简介
  12. Codeforces Round #203 (Div. 2)B Resort
  13. [Jsoi2011]分特产
  14. Android开发—— Tablayout的使用
  15. vue.js 列表追加项写法
  16. Java裸写爬虫技术,运用多线程技术,高效爬取某个医疗机构网站数据
  17. sublime2 nodejs 执行编译无反应
  18. Django create和save方法
  19. ARMV7-M数据手册---Part B :System Level Architecture---B3 System Address Map
  20. ld: framework not found FileProvider for architecture arm64

热门文章

  1. CKEditor如何统计文字数量
  2. ecshop init.php文件分析
  3. HDU 1025-Constructing Roads In JGShining&#39;s Kingdom(最长不降子序列,线段树优化)
  4. 《Python CookBook2》 第一章 文本 - 替换字符串中的子串
  5. 从lighttpd学到的代码技巧
  6. 转】Nginx+tomcat配置集群负载均衡
  7. 【转】Maven实战(七)---传递依赖
  8. Java设计模式系列之单例模式
  9. Spring 使用注解方式进行事物管理
  10. CommandLine 和 Options