A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© aisini 金牌黑马   /  2014-7-24 22:51  /  722 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      索引器提供了一种可以让类被当作数组进行访问的方式。在C#中,类索引器是通过this的属性实现的。
  1. index.ToString("D2")
复制代码
将index转换成一个具有两个字符宽度的字符串
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace ClassIndexer
  6. {
  7.     /// <summary>
  8.     /// define a class called AClass,which has only one private variable
  9.     /// </summary>
  10.    class AClass {
  11.        private string _name;
  12.        public string Name {
  13.            get { return this._name; }
  14.            set { this._name = value; }
  15.        }
  16.        public AClass(string name) {
  17.            this._name = name;
  18.        }
  19.     }
  20.     /// <summary>
  21.     /// AClassContainer class
  22.     /// </summary>
  23.    class AClassContainer {
  24.        private AClass[] _AClassList;
  25.        public AClassContainer() {
  26.            this._AClassList = new AClass[10];
  27.        }
  28.        public AClassContainer(int cap) {
  29.            this._AClassList = new AClass[cap];
  30.        }
  31.        /// <summary>
  32.        /// class indexer by using int
  33.        /// </summary>
  34.        /// <param name="index"></param>
  35.        /// <returns></returns>
  36.        public AClass this[int index] {
  37.            get {
  38.                if ((index < 0) || (index > this._AClassList.Length)) return null;
  39.                else return this._AClassList[index];
  40.            }
  41.            set {
  42.                if ((index < 0) || (index > this._AClassList.Length)) return;
  43.                else this._AClassList[index] = value;
  44.            }
  45.        }
  46.        /// <summary>
  47.        /// class indexer by using string
  48.        /// </summary>
  49.        /// <param name="name"></param>
  50.        /// <returns></returns>
  51.        public AClass this[string name] {
  52.            get {
  53.                foreach (AClass cls in this._AClassList) {
  54.                    if (cls.Name == name) return cls;
  55.                }
  56.                return null;
  57.            }
  58.        }
  59.    }
  60.     class Program
  61.     {
  62.         static void Main(string[] args)
  63.         {
  64.             int count = 10;
  65.             AClassContainer classContainer = new AClassContainer(count);
  66.             for (int index = 0; index < count; index++) {
  67.                 string name = index.ToString("D2");
  68.                 classContainer[index] = new AClass(name);
  69.             }
  70.             for (int index = 0; index < count; index++)
  71.             {
  72.                 AClass cls = classContainer[index];
  73.                 System.Console.WriteLine("classContainer[{0}].Name=\"{1}\"",index,cls.Name);
  74.             }
  75.             System.Console.WriteLine();
  76.             for (int index = count - 1; index >= 0; index--) {
  77.                 string name = index.ToString("D2");
  78.                 AClass cls = classContainer[name];
  79.                 System.Console.WriteLine("classContainer[{0}].Name=\"{1}\"",name,cls.Name);
  80.             }
  81.             System.Console.ReadLine();
  82.         }
  83.     }
  84. }
复制代码
结果:
  1. <p>classContainer[0].Name="00"</p><p>classContainer[1].Name="01"</p><p>classContainer[2].Name="02"</p><p>classContainer[3].Name="03"</p><p>classContainer[4].Name="04"</p><p>classContainer[5].Name="05"</p><p>classContainer[6].Name="06"</p><p>classContainer[7].Name="07"</p><p>classContainer[8].Name="08"</p><p>classContainer[9].Name="09"</p><p>classContainer[09].Name="09"</p><p>classContainer[08].Name="08"</p><p>classContainer[07].Name="07"</p><p>classContainer[06].Name="06"</p><p>classContainer[05].Name="05"</p><p>classContainer[04].Name="04"</p><p>classContainer[03].Name="03"</p><p>classContainer[02].Name="02"</p><p>classContainer[01].Name="01"</p><p>classContainer[00].Name="00"</p>
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马