索引器和数组的比较
索引器的索引值(index)类型不受限制为整数
用来访问数组的索引值(index),其类型一定为整数,然后索引器可以定义其他类型的索引值,索引器可以重载。
一个类并不受限只能够定义一个索引器,只要索引器的函数名字不同,一个类就可以拥有多个索引器,可以重载他的功能。
器不是一个变量索引和数组不同的地方在于,索引器并没有直接对应应用数据存储的地方。而数组则有。
索引器有get和set俩个访问器,用来指明要读取或者索引器无索引时要执行的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Collections;
using System.Text;
using System.Reflection.Emit;
using System.Web;
class Program
{
private string name;
private int id;
private int score;
public Program(string name, int id, int score)
{
this.name = name;
this.id = id;
this.score = score;
}
public string Name
{
get { return name; }
set { name = value; }
}
public int Id
{
get { return id; }
set { id = value; }
}
public int Score
{
get { return score; }
set { score = value; }
}
class Programindexer
{
private ArrayList arrProgram;
public Programindexer()
{
arrProgram = new ArrayList();
}
public int this[string name, int id]
{
get
{
foreach (Program cs in arrProgram)
{
if (cs.Name == name && cs.Id == id)
{
return cs.score;
}
}
return -1;
}
set
{
arrProgram.Add(new Program(name, id, value));
}
}
public ArrayList this[string name]
{
get
{
ArrayList temoer = new ArrayList();
foreach (Program cs in arrProgram)
{
if (cs.Name == name)
{
temoer.Add(cs);
}
}
return temoer;
}
}
}
class text
{
static void Main()
{
Programindexer csd = new Programindexer();
csd["张三", 1] = 70;
csd["李四", 1] = 885;
csd["张三", 2] = 90;
csd["张三", 3] = 70;
csd["张三", 4] = 970;
csd["张三", 5] = 5;
Console.WriteLine(csd["张三", 2]);
Console.WriteLine("张三的所有的的成绩");
ArrayList temoer;
temoer = csd["张三"];
foreach (Program cs in temoer)
{
{
Console.WriteLine("姓名:"+cs.name+"id号"+cs.id+"数字"+cs.score);
}
}
}
}
}