已知学生课程分数类,源代码如下。 
要求:
(1)读懂该类的索引类。 
(2)运用索引器的重载知识,添加查找张三所有课程的成绩的功能。 
01.using System;   
02.using System.Collections;   
03.//这次我们新建一个类,专门用来存放某个学生某门课程的分数   
04.//存放信息:姓名,课程ID,成绩   
05.class CourseScore   //课程的分数类   
06.{   
07.    private string name;   
08.    private int courseID;   
09.    private int score;   
10.    //构造函数   
11.    public CourseScore(string name, int courseID, int score)   
12.    {   
13.        this.name = name;   
14.        this.courseID = courseID;   
15.        this.score = score;   
16.    }   
17.    //给私有字段加上属性   
18.    public string Name   
19.    {   
20.        get { return name; }   
21.        set { name = value; }   
22.    }   
23.    public int CourseID   
24.    {   
25.        get { return courseID; }   
26.        set { courseID = value; }   
27.    }   
28.    public int Score   
29.    {   
30.        get { return score; }   
31.        set { score = value; }   
32.    }   
33.}   
34.//做一个这个类的索引器   
35.class CourseScoreIndexer    //索引器,用于存取和查询CourseScore类   
36.{   
37.    //ArrayList本身也是个索引器   
38.    private ArrayList arrCourseScore;   
39.    //无参构造   
40.    public CourseScoreIndexer()   
41.    {   
42.        //实例化   
43.        arrCourseScore = new ArrayList();   
44.    }   
45.    //索引器   
46.    //我们希望通过姓名和课程ID可以查找到一个分数   
47.    //索引器可以使用一个或者多个参数,而且多个参数之间可以是不同的数据类型   
48.    public int this[string name, int courseID]   
49.    {   
50.        get  
51.        {   
52.            foreach (CourseScore cs in arrCourseScore)   
53.            {   
54.                if (cs.Name == name && cs.CourseID == courseID)   
55.                {   
56.                    return cs.Score;   
57.                }   
58.            }   
59.            return -1;   
60.        }   
61.        set  
62.        {   
63.            //name和courseID是索引器的参数,value是一个隐含的值(90就是value)   
64.            arrCourseScore.Add(new CourseScore(name, courseID, value)); //arr["张三",1]=90   
65.        }   
66.    }   
67.}   
68.class Test   
69.{   
70.    static void Main()   
71.    {    
72.        //声明一个索引器   
73.        CourseScoreIndexer csi = new CourseScoreIndexer();   
74.        csi["张三", 1] = 90;   
75.        csi["张三", 2] = 80;   
76.        csi["张三", 3] = 85;   
77.        csi["李四", 1] = 80;   
78.        Console.WriteLine(csi["张三", 2]);   
79.    }   
80.}