|
indexer的小悟 |
using System;using System.Collections;
class courseData{ private string m_Name; private int m_ID; private int m_Grade; public string Name { get{ return m_Name;} set{ m_Name=value;} } public int id { get{ return m_ID;} set{ m_ID=value;} } public int grade { get {return m_Grade; } set { m_Grade=value;} } public courseData(string name,int id,int grade) { this.Name=name; this.id=id; this.grade=grade; } public courseData() { }}
class courseGradeIndexor{ private ArrayList arrlist=new ArrayList(); private courseData []cD=new courseData[5]; //对ARRAYLIST的索引器 public int this[string name,int id] { get { foreach(courseData cd in arrlist) { if(cd.Name==name && cd.id==id) { return cd.grade; } } return -1; } set { arrlist.Add(new courseData(name,id,value)); } } public ArrayList this[string name] { get { ArrayList relist=new ArrayList(); foreach(courseData cd in arrlist) { if(cd.Name==name) { relist.Add(cd); } } return relist; } } //对对象数组的索引器 public int this[string name,int id,int index] { get { if(cD[index].Name==name && cD[index].id==id) return cD[index].grade; else return -1; } set { cD[index]=new courseData(name,id,value); } } private ArrayList objectArray=new ArrayList(); public ArrayList this[string name,long Name] { get { for(int i=0;i<cD.Length;i++) { objectArray.Add(cD[i]); } return objectArray; } }}
class test{ static void Main() { courseGradeIndexor index=new courseGradeIndexor(); index["王海:",1]=100; index["王海:",2]=90; index["王海:",3]=99; ArrayList test=new ArrayList(); test=index["王海:"]; foreach(courseData cd in test) { Console.WriteLine("姓名: "+cd.Name+" 代号:" +cd.id.ToString()+" 成绩:"+cd.grade.ToString()); } Console.ReadKey(); index["陈强:",1,0]=91; index["陈强:",2,1]=90; index["陈强:",3,2]=97; // Console.WriteLine("Now this is the Object indextor:.....");// Console.WriteLine("你所查找的结果: "+index["陈强:",2,1]); ArrayList objectArray=new ArrayList(); objectArray=index["陈强:",(long)1]; Console.WriteLine("Now this are the Object indextor:....."); try { foreach(courseData cd in objectArray) { Console.WriteLine("姓名: "+cd.Name+" 代号:" +cd.id.ToString()+" 成绩:"+cd.grade.ToString()); } } catch(Exception) { Console.WriteLine(new Exception().Message); } finally {Console.ReadKey();} }}小结:属性:用于封装字段. 索引器:用于封装数组. 委托:用于封装方法. 要想用属性因为其目的,所以先定义一个字段,然后在属性中操纵此字段.要用索引器,那就先定义一个数组,然后在索引器中操纵它.我认为索引器是特殊的属性. | |
|
|
|
|