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

          常用鏈接

          留言簿

          隨筆分類(75)

          隨筆檔案(78)

          相冊

          實用Links

          我的Links

          搜索

          •  

          積分與排名

          • 積分 - 114345
          • 排名 - 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
          主站蜘蛛池模板: 汉川市| 宁阳县| 温宿县| 黔江区| 儋州市| 柏乡县| 苍山县| 丘北县| 临泉县| 贵港市| 神农架林区| 靖宇县| 浮山县| 兖州市| 略阳县| 应用必备| 运城市| 秦皇岛市| 阿坝| 北流市| 长乐市| 临城县| 白河县| 大洼县| 府谷县| 柘荣县| 疏勒县| 石台县| 专栏| 南溪县| 台东县| 广饶县| 遵义市| 杨浦区| 贵港市| 黄平县| 八宿县| 武胜县| 彭州市| 平塘县| 拉萨市|