由子未

向上人生路

导航

indexer索引器

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Collections;
  4 using System.Text;
  5 
  6 namespace indexer
  7 {
  8     class Program
  9     {
 10         static void Main(string[] args)
 11         {
 12             //class chongzai-------------------
 13             chongzai newindexer = new chongzai();//和类数组相比,索引器只须声明一个实例
 14             newindexer[0= "li";//set索引器
 15             newindexer[1= "lai";
 16             newindexer[2= "chen";
 17             Console.WriteLine("newindexer[0]=" + newindexer[0]);//get索引器
 18             Console.WriteLine("newindexer[1]=" + newindexer[1]);
 19             Console.WriteLine("newindexer[2]=" + newindexer[2]);
 20             newindexer["li"= 0;
 21             newindexer["lai"= 1;
 22             newindexer["chen"= 2;
 23             Console.WriteLine("newindexer[li]=" + newindexer["li"]);
 24             Console.WriteLine("newindexer[lai]=" + newindexer["lai"]);
 25             Console.WriteLine("newindexer[chen]=" + newindexer["chen"]);
 26 
 27             //class hashtableA------------------------
 28             //hashtableA newhashA = new hashtableA();
 29             //newhashA["a001"] = "A1";
 30             //newhashA["a002"] = "A2";
 31             //newhashA["a003"] = "A3";
 32             //Console.WriteLine("newhashA[a001]=" + newhashA["a001"]);
 33             //Console.WriteLine("newhashA[a002]=" + newhashA["a002"]);
 34             //Console.WriteLine("newhashA[a003]=" + newhashA["a003"]);
 35 
 36             //class indexeR-------------------------
 37             //indexeR newindexer = new indexeR();//和类数组相比,索引器只须声明一个实例
 38             //newindexer[0] = "liao";
 39             //newindexer[1] = "lai";
 40             //newindexer[2] = "chen";
 41             //Console.WriteLine("newindexer[0]=" + newindexer[0]);
 42             //Console.WriteLine("newindexer[1]=" + newindexer[1]);
 43             //Console.WriteLine("newindexer[2]=" + newindexer[2]);
 44 
 45             //class arrclasS---------------------
 46             //arrclasS[] newarR = new arrclasS[3];//声明数组类
 47             //newarR[0] = new arrclasS("zhang");//数组类可以带参数
 48             //newarR[1] = new arrclasS("liao");
 49             //newarR[2] = new arrclasS("tang");
 50             //Console.WriteLine("newarR[0]=" + newarR[0].yournamE);
 51             //Console.WriteLine("newarR[1]=" + newarR[1].yournamE);
 52             //Console.WriteLine("newarR[2]=" + newarR[2].yournamE);
 53 
 54             //class a-------------------
 55             //a[] newa = new a[3];
 56             //newa[0] = new a("fd");
 57             //newa[1] = new a("nn");
 58         }
 59     }
 60     class chongzai
 61     {
 62         private Hashtable nameA = new Hashtable();//Hashtable声明的成员用Add方法为它赋值
 63         private string[] strB = new string[3];
 64         internal string this[int index]//索引器不可以声明为static
 65         {
 66             set
 67             {
 68                 strB[index] = value;
 69             }
 70             get
 71             {
 72                 return strB[index];
 73             }
 74         }
 75         internal int this[string yournamE]//同一个类的同名索引器(带this)用不同的参数调用,就是重载
 76         {
 77             set
 78             {
 79                 nameA.Add(value, yournamE);//括号里的value,key的位置对应索引器的this和后面带的参数[string yournamE],对应的数据类型也要一样
 80             }
 81             get
 82             {
 83                 foreach (DictionaryEntry b in nameA)//用b从nameA字典中遍历全部值  //DictionaryEntry是Hashtable的一个属性
 84                 {
 85                     if (b.Value.ToString() == yournamE)//匹配等于调用值的字典关键字
 86                     {
 87                         return Convert.ToInt32(b.Key);//返回字典关键字
 88                     }
 89                 }
 90                 return -1;
 91             }
 92         }
 93 
 94     }
 95         
 96     //class hashtableA//非整数数组成员的索引器
 97     //{
 98     //    private Hashtable nameA = new Hashtable();//Hashtable是系统参数,它的值为key,value
 99     //    internal String this[string index]
100     //    {
101     //        set
102     //        {
103     //            nameA.Add(index, value);//括号里的值对应key,value  //等同于nameA[index]=value
104     //        }
105     //        get
106     //        {
107     //            return nameA[index].ToString();
108     //        }
109     //    }
110     //}
111 
112     //class indexeR//索引器R
113     //{
114     //    //private string name;
115     //    private String[] namE = new String[3];
116     //    internal string this[int index]//用this关键字声明数组类构造器
117     //    {
118     //        get
119     //        {
120     //            return namE[index];
121     //        }
122     //        set
123     //        {
124     //            namE[index] = value;
125     //        }
126     //    }
127 
128     //}
129 
130     //class arrclasS//属性
131     //{
132     //    private readonly String namE;
133     //    internal arrclasS(String nameA)
134     //    {
135     //        this.namE = nameA;
136     //    }
137     //    internal String yournamE
138     //    {
139     //        get
140     //        {
141     //            return namE;
142     //        }
143     //    }
144     //}
145 
146     //class a
147     //{
148     //    internal a(String str)
149     //    {
150     //        Console.WriteLine(str);
151     //    }
152     //}
153 }
154 
155 
156 

posted on 2009-03-01 16:59  Rayleigh  阅读(238)  评论(0编辑  收藏  举报