隨筆 - 78  文章 - 25  trackbacks - 0
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿

          隨筆分類(75)

          隨筆檔案(78)

          相冊

          實用Links

          我的Links

          搜索

          •  

          積分與排名

          • 積分 - 114328
          • 排名 - 515

          最新評論

          閱讀排行榜

          評論排行榜

          索引器提供了一種可以讓類被當作數組進行訪問的方式。在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"


          posted on 2009-10-25 22:51 期待明天 閱讀(418) 評論(0)  編輯  收藏 所屬分類: CSharp
          主站蜘蛛池模板: 上饶县| 镇安县| 济南市| 中方县| 寿阳县| 车险| 大港区| 杭锦后旗| 丹江口市| 新邵县| 乌海市| 科技| 定州市| 龙门县| 武鸣县| 南岸区| 南安市| 兰西县| 巴林左旗| 揭阳市| 远安县| 新巴尔虎左旗| 昌乐县| 射阳县| 固镇县| 如东县| 南陵县| 手机| 砚山县| 饶阳县| 象州县| 南宫市| 中牟县| 岳普湖县| 东乌珠穆沁旗| 秦皇岛市| 宁陵县| 曲麻莱县| 贵溪市| 内乡县| 新田县|