索引

作者在 2008-04-26 14:43:26 发布以下内容

using System;
using System.Windows.Forms;
class indexClass
{
 string[] name=new string[10];//name数组长度为10。
 public string this[int index] //返回string类型 index为整型索引项
 {
  get
  {
   return name[index];
  }
  set
  {
   if(index>9||index<0) //判定下标是否在0-9之间
    MessageBox.Show("输入数组下标有误");
   else
    name[index]=value; 
  }
 }
}
class test
{
 static void Main()
 {
  indexClass a=new indexClass();
  a[0]="张三";
  a[1]="李四";
  a[2]="王五";
  Console.WriteLine("a[0]编号的名字为 "+a[0]);
  Console.WriteLine("a[1]编号的名字为 "+a[1]);
  Console.WriteLine("a[2]编号的名字为 "+a[2]);
 }
}
输出:

a[0]编号的名字为 张三

a[1]编号的名字为 李四

a[2]编号的名字为 王五

 

C#基础 | 阅读 1254 次
文章评论,共4条
fanneysky(作者)
2008-04-26 15:08
1
using System;
using System.Collections;
using System.Windows.Forms;
class indexClass
{
//Hashtable存在System.Collectiongs命名空间里
//Hashtable处理key/value键值对,此处为(index,name),key/value均为object类型
    private Hashtable name=new Hashtable();     
                     public string this[string index]
    {
        get
        {
            return name[index].ToString();//将object类型转换为string类型
        }
        set
        {
            name.Add(index,value); //用Add函数将name里添加一项
        }
    }
}
class test
{
    static void Main()
    {
        indexClass a=new indexClass();
        a[&quot;A001&quot;]=&quot;张三&quot;;//字符串,用双引号.
        a[&quot;A002&quot;]=&quot;李四&quot;;
        a[&quot;A003&quot;]=&quot;王五&quot;;
        Console.WriteLine(&quot;A001编号的名字为 &quot;+a[&quot;A001&quot;]);
        Console.WriteLine(&quot;A002编号的名字为 &quot;+a[&quot;A002&quot;]);
        Console.WriteLine(&quot;A003编号的名字为 &quot;+a[&quot;A003&quot;]);
    }
}
输出基本同上.
fanneysky(作者)
2008-04-26 15:51
2
using System;
using System.Collections;
using System.Windows.Forms;
class indexClass
{
    private Hashtable name=new Hashtable();
    //A索引器
    public string this[int index]
    {
        get
        {
            return name[index].ToString();
        }
        set
        {
            name.Add(index,value);
        }
    }
    //B索引器
    public int this[string aName]
    {
        get
        {
            foreach (DictionaryEntry c in name)//Hashtable存放在DictionaryEntry类里
            {
                if(c.Value.ToString()==aName)
                    return Convert.ToInt32(c.Key);
            }
            
            return -1;
        }
        set
        {
            name.Add(value,aName);
        }
    }
}
class test
{
    static void Main()
    {
        indexClass a=new indexClass();
        //A索引器
        a[100]=&quot;张三&quot;;
        a[200]=&quot;李四&quot;;
        a[300]=&quot;王五&quot;;
        //B索引器
        a[&quot;马六&quot;]=400;
        //A索引器
        Console.WriteLine(&quot;100编号的名字为 &quot;+a[100]);
        Console.WriteLine(&quot;200编号的名字为 &quot;+a[200]);
        Console.WriteLine(&quot;300编号的名字为 &quot;+a[300]);
        //A索引器
        Console.WriteLine(&quot;马六的编号为 &quot;+a[&quot;马六&quot;]);
        //B索引器
        Console.WriteLine(&quot;编号为400的员工为 &quot;+a[400]);
    }
}
fanneysky(作者)
2008-04-26 16:36
3
索引器与属性的不同之处:
索引器可以定义为其他类型的值,但用来访问数组类型的索引值(index)类型一定为整型;
索引器有get访问器和set访问器,用来读写索引器元素时需要执行的代码;
索引器并没有数据直接存取的地方;
属性以名称来标识,索引器以函数来标识;
属性不能重载(名称标识),索引器能被重载(因为是以函数标识);
属性可以为static,索引器是实例成员,永远不能为static,索引器只能以类的实例名来使用;
索引器必须使用this,而属性名称可以随便取;
fanneysky(作者)
2008-04-26 17:53
4
using System;
using System.Collections;
class courseScore
{
    private string name;
    private int courseId;
    private int score;
    public courseScore(string Name,int CourseId,int Score)
    {
        this.name=Name;
        this.courseId=CourseId;
        this.score=Score;
    }
    public string Name
    {
        get { return name; }
        set { name=value; }
    }
    public int CourseId
    {
        get { return courseId; }
        set { courseId=value; }
    }
    public int Score
    {
        get { return score; }
        set { score=value; }
    }
}
class courseScoreIndex
{
    private ArrayList arrcourseScor;
    public courseScoreIndex()
    {
        arrcourseScor= new ArrayList();
    }
    public int this[string name,int courseId]
    {
        get
        {
            foreach(courseScore c1 in arrcourseScor)
            {
                if(c1.Name==name &amp;&amp; c1.CourseId==courseId)
                return c1.Score;
            }
            return -1;
        }
        set
        {
            arrcourseScor.Add(new courseScore(name,courseId, value));//this 里的name跟courseId,value为例:(pp[&quot;张三&quot;,2]=93)
        }
    }
    public ArrayList this[string name]
    {
        get
        {
            ArrayList temp=new ArrayList();
            foreach (courseScore c1 in arrcourseScor)
            {
                if(c1.Name==name)
                {
                    temp.Add(c1);
                }
            }
            return temp;
        }
    }
}
class test
{
    static void Main()
    {
        courseScoreIndex pp=new courseScoreIndex();
        pp[&quot;张三&quot;,1]=90;
        pp[&quot;张三&quot;,2]=93;
        pp[&quot;张三&quot;,3]=92;
        pp[&quot;李四&quot;,1]=95;
        Console.WriteLine(&quot;张三的1课程分数为 &quot;+pp[&quot;张三&quot;,1]);
        ArrayList temp1=new ArrayList();
         //调用pp[&quot;张三&quot;]等于调用了索引public ArrayList this[string name] ,返回temp。 
        temp1=pp[&quot;张三&quot;];
        //声明r为courseScore类型,因为temp1=temp=courseScore类型
        foreach(courseScore r in temp1) 
        {
            Console.WriteLine(&quot;姓名 &quot;+r.Name+&quot;  课程编号  &quot;+r.CourseId+&quot;  成绩  &quot;+r.Score);
        }
        
        
            
    }
}
游客请输入验证码
浏览19879次