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就没有返回值了。因而编译器抱怨“并非所有的代码路径都返回值”。
{
//姓名,课程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]); }
}
}