get 
            { 
                foreach(CourseScore cs in arrCourseScore) 
                { 
                    if(cs.Name==name && cs.CourseID==courseID) 
                    { 
                        return cs.Score; 
                    } 
                    return -1; 
                } 
            } foreach当arrCourseScore的“长度”如果为零的时候,括号内的语句将不会执行,对不对?
也就是说return cs.Score; 或return -1;语句可能不会执行,这种情况下getter就没有返回值了。因而编译器抱怨“并非所有的代码路径都返回值”。

解决方案 »

  1.   

    namespace 多个参数的索引器 

        //姓名,课程ID,成绩 
        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 CourseScoreIndexer  //索引器,用于存取和查询CourseScore 
        { 
            private ArrayList arrCourseScore; 
            public CourseScoreIndexer() 
            { 
                arrCourseScore=new ArrayList(); 
            } 
            public int this[string name, int courseID] 
            { 
                get             { 
                    foreach(CourseScore cs in arrCourseScore) 
                    { 
                        if(cs.Name==name && cs.CourseID==courseID) 
                        { 
                            return cs.Score; 
                        } 
                        else continue; 
                    } 
                 return -1; 
                } 
                set 
                { 
                    arrCourseScore.Add(new CourseScore(name,courseID,value)); 
                } 
            } 
        } 
        class Program 
        { 
            static void Main(string[] args) 
            { 
              CourseScoreIndexer csi =new CourseScoreIndexer(); 
                csi["张三",1]=90; 
                csi["张三",2]=80; 
                csi["张三",3]=85; 
                csi["李四",1]=80; 
                Console.WriteLine(csi["张三",2]);                     } 
        }