索引器提供了一种可以让类被当作数组进行访问的方式。在C#中,类索引器是通过this的属性实现的。
将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();
- }
- }
- }
复制代码 结果:- <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>
复制代码
|
|