请教c#简单的索引器问题

问题描述

我是c#新手写了个程序一直报错请大家帮我看看usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Collections;namespace多个参数的索引器{//姓名,课程ID,成绩classCourseScore//课程的分数类{privatestringname;privateintcourseID;privateintscore;publicCourseScore(stringname,intcourseID,intscore){this.name=name;this.courseID=courseID;this.score=score;}publicstringName{get{returnname;}set{name=value;}}publicintCourseID{get{returncourseID;}set{courseID=value;}}publicintScore{get{returnscore;}set{score=value;}}}classCourseScoreIndexer//索引器,用于存取和查询CourseScore{privateArrayListarrCourseScore;publicCourseScoreIndexer(){arrCourseScore=newArrayList();}publicintthis[stringname,intcourseID]{get{foreach(CourseScorecsinarrCourseScore){if(cs.Name==name&&cs.CourseID==courseID){returncs.Score;}return-1;}}set{arrCourseScore.Add(newCourseScore(name,courseID,value));}}}classProgram{staticvoidMain(string[]args){CourseScoreIndexercsi=newCourseScoreIndexer();csi["张三",1]=90;csi["张三",2]=80;csi["张三",3]=85;csi["李四",1]=80;Console.WriteLine(csi["张三",2]);}}}错误信息错误1“多个参数的索引器.CourseScoreIndexer.this[string,int].get”:并非所有的代码路径都返回值D:Backup我的文档VisualStudio2005Projects第二章多个参数的索引器多个参数的索引器Program.cs4513多个参数的索引器

解决方案

解决方案二:
get{foreach(CourseScorecsinarrCourseScore){if(cs.Name==name&&cs.CourseID==courseID){returncs.Score;}return-1;}}

foreach当arrCourseScore的“长度”如果为零的时候,括号内的语句将不会执行,对不对?也就是说returncs.Score;或return-1;语句可能不会执行,这种情况下getter就没有返回值了。因而编译器抱怨“并非所有的代码路径都返回值”。
解决方案三:
namespace多个参数的索引器{//姓名,课程ID,成绩classCourseScore//课程的分数类{privatestringname;privateintcourseID;privateintscore;publicCourseScore(stringname,intcourseID,intscore){this.name=name;this.courseID=courseID;this.score=score;}publicstringName{get{returnname;}set{name=value;}}publicintCourseID{get{returncourseID;}set{courseID=value;}}publicintScore{get{returnscore;}set{score=value;}}}classCourseScoreIndexer//索引器,用于存取和查询CourseScore{privateArrayListarrCourseScore;publicCourseScoreIndexer(){arrCourseScore=newArrayList();}publicintthis[stringname,intcourseID]{get{foreach(CourseScorecsinarrCourseScore){if(cs.Name==name&&cs.CourseID==courseID){returncs.Score;}elsecontinue;}return-1;}set{arrCourseScore.Add(newCourseScore(name,courseID,value));}}}classProgram{staticvoidMain(string[]args){CourseScoreIndexercsi=newCourseScoreIndexer();csi["张三",1]=90;csi["张三",2]=80;csi["张三",3]=85;csi["李四",1]=80;Console.WriteLine(csi["张三",2]);}}}

时间: 2024-11-09 03:07:55

请教c#简单的索引器问题的相关文章

概述C#中的索引器

索引 C#语言一个最令人感兴趣的地方就是类的索引器(indexer).简单说来,所谓索引器就是一类特殊的属性,通过它们你就可以像引用数组一样引用自己的类.显然,这一功能在创建集合类的场合特别有用,而在其他某些情况下,比如处理大型文件或者抽象某些有限资源等,能让类具有类似数组的行为当然也是非常有用的.本文就会引领你设置类来采用索引器.但是,首先让我们概述下属性这个概念以便了解些必要的背景知识. 属性 假如你曾经用VB6编写过程序,那么你应该很熟悉属性方法才对,所谓属性方法其实就是特殊的类成员,它实

界面-请教一下,android视频播放器操作菜单的实现思路

问题描述 请教一下,android视频播放器操作菜单的实现思路 在做一个简单的android视频播放器练手,使用的MediaPlayer+SurfaceView.现在实现了播放,在着手于播放时的操作界面. 实现目标就是很常见的那种,点击一下视频,就会浮现在正在播放的视频上面,两秒木有操作自动隐藏. 我能想到的就是放在fragment里,然后监听SurfaceView的点击情况,来控制fragment的显示和隐藏. 请教各位指点我这个思路有没有缺陷,或者有没有其他更好的思路.谢谢 解决方案 网上有

话说索引器、foreach和集合初始化器

索引器 在使用集合类时我们经常用到索引器,例如List集合,我们使用int数字作为索引器参数,而字典集合我们可以使用任何对象作为索引器参数. 在我们自己定义的类中使用索引器的情况也许不多,现在举例详细说明一下.假设我们定义首都类( Capital ): public class Capital { /// <summary> /// 名称 /// </summary> public string Name { get; set; } /// <summary> ///

C#实现Ruby的负数索引器_C#教程

C#实现Ruby的负数索引器 public class InvertibleList<T> : List<T> { public new T this[int index] { get { if (index >= 0) return base[index]; if (Count + index < 0) throw new IndexOutOfRangeException(); return this[Count + index]; } set { if (index

一起谈.NET技术,话说索引器、foreach和集合初始化器

索引器 在使用集合类时我们经常用到索引器,例如List集合,我们使用int数字作为索引器参数,而字典集合我们可以使用任何对象作为索引器参数. 在我们自己定义的类中使用索引器的情况也许不多,现在举例详细说明一下.假设我们定义首都类( Capital ): public class Capital {/// <summary>/// 名称/// </summary> public string Name { get; set; } /// <summary>/// 定位//

C#锐利体验之第八讲 索引器与操作符重载

索引 索引器 索引器(Indexer)是C#引入的一个新型的类成员,它使得对象可以像数组那样被方便,直观的引用.索引器非常类似于我们前面讲到的属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用.下面是典型的索引器的设计,我们在这里忽略了具体的实现. class MyClass{    public object this [int index]    {        get        {            // 取数据        }        set  

SEOer需要了解搜索引擎的索引器

一个合格的SEOer需要对搜索引擎的结构有一定的了解,这样在进行seo时可以做到心中有数,有条不紊,而不必拘泥于固定的优化方法和技巧.而此时要分析的索引器,它是搜索引擎结构中一个比较重要部分. 索引 器第对搜索引擎是比较重要的,比如:我们熟悉的百度新闻,它是"由机器每5分钟自动选取更新",比较具有实时性,并且数据量也是相当的大.此时索引器的算法对索引器的影响就显得十分突出了.因此有人说,一个搜索引擎的有效性在很大的程度上取决于索引器的质量(精确的说应该归功于索引器的索引算法). 下面我

通过索引器简化C#类型信息访问

前言 作为一个有别于Java.Ruby等语言的一个特性,C#可以用索引器(Indexer)将类型本身以对象数组的形式供外部使用.下面是一个对比:(为了简化,略去了边界检查) 相关厂商内容 QClub:当SOA遭遇现实(7.26 杭州) 不难看出通过引入索引器,我们的目标类型DataAccess在涉及到根据编号检索的时候看上去更接近一个数组的样子,客户程序的开发人员不用关心具体的方法名称是GetData/GetInternalData或者是SetData/ UpdateData,仅仅把它当成一个数

C#下的BitArray类:实现索引器和位操作

System.Collections命名空间下的BitArray相当于一个bool类型的数组bool[].MSDN用 BitArray做例子实现了一个索引器,今天研究了一下这个例子,对原来的实现做了一些改变 ,将>> 5操作变成了mod 32,敝人以为这样看起来会更直观. 代码如下: public class MyBitArray { private int[] m_Bits; private int m_Length; public MyBitArray(int length) { //Co