C#類索引器的使用

來源:互聯網
上載者:User

標籤:使用   os   io   for   re   c   cti   ar   

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.