我什么时候应该使用C#索引器?我想更多地使用索引器,但我不确定何时使用它们。我在网上只能找到使用MyClass和IndexerClass等类的示例。在有学生和教师的学校系统中,每位教师都有一份他们负责的学生名单——在这种情况下是否需要索引器?为简单起见:每个学生只能属于一位老师。这是我创建的视频http://www.youtube.com/watch?v=HdtEQqu0yOY下面是关于它的详细解释。索引器通过简化的接口促进访问类中包含的集合。它是一种语法糖。例如,假设您有一个包含地址集合的客户类。现在假设我们想通过“Pincode”和“PhoneNumber”获取一组地址。所以合乎逻辑的步骤是您将创建两个重载函数,一个接受“PhoneNumber”,另一个接受“PinCode”。您可以在下面的代码中看到我们定义了两个函数。客户客户=新客户();客户.getAddress(1001);Customers.getAddress("9090");如果您使用索引器,您可以使用下面代码中显示的内容简化上面的代码。客户客户=新客户();地址o=客户[10001];o=客户["4320948"];干杯。如果类表示对象的列表、集合或数组,通常会使用索引器。在您的情况下,您可以提供一个索引器来为教师的学生提供基于索引的访问。索引器是一个高度专业化的属性,它允许类(或结构)的实例像数组一样被索引(属性可以是静态的,但索引器不能)。为什么使用索引器:-类本身不是新的数据结构,而是数据结构。-简化语法-何时使用语法糖:-如果你的类需要它的实例的列表(/数组)(示例1)-如果你的类表示与你的类直接相关的值列表(/数组)(示例1)2)例1:publicClassPerson{publicstringName{get;设置;}私人人[]_backingStore;publicPersonthis[intindex]{get{return_backingStore[index];}set{_backingStore[索引]=值;}}}Personp=newPerson();p[0]=newPerson(){Name="Hassan"};p[1]=newPerson(){Name="JohnSkeet"};示例2:classTempratureRecord{privatefloat[]temps=newfloat[10]{56.2F,56.7F,56.5F,56.9F,58.8F,61.3F};publicintLength{get{returntemps.Length;}}publicfloatthis[intindex]{get{returntemps[index];}set{temps[index]=value;}}}随机顺序访问如果您通常按顺序访问数据,则可以使用枚举器。另一方面,索引器对于直接访问特定元素很有用,没有特定的顺序。这当然假设您知道所需元素的索引。例如,一个组合框始终支持两个值:一个要显示给用户的字符串,以及一个属于它的id。您可以使用组合框中所选项目的ID直接访问集合的索引,而不是搜索集合。C#中索引器的优点是您可以重载它们,因此您可以通过不同类型的键访问项目。简单的答案(如上)是,当一个类表示/包含一个项目集合时,索引器将返回该集合的元素。publicStudentthis[intindex]{..在更高级的情况下,您可以使用类来创建默认行为并使其看起来有点像委托,尤其是当类表示映射或进程时。例如,计算冰箱中啤酒冷却速度的类:而不是输入temperature=coorsLight.CalculateFutureTemperature(time);你可以相信这个temperature=coorsLight[time];如果类的预期行为(和意图)是返回一个值。索引器是一种从聚合(例如数组或集合)中选择元素的方法。虽然我同意IanDavis的观点,但我认为索引器代表的不仅仅是公共API润色。索引器是访问数组的主要方式,大多数主要类在索引器的.NETBCL实现中表示集合,可能是为了在处理聚合其他类型的类型时提供通用体验。因为索引器是许多BCL集合类型接口的标准部分,并且因为这些类型被大量使用,所以有理由建议在开发人员学习.NET作为平台时创建可以使用集合访问集合的期望。某种类型的索引器。如果您的类型的接口符合开发人员已有的期望,则该类型会变得更易于使用,因为开发人员无需考虑它。无论所讨论的开发人员是您组织内部的还是外部的,都是如此。当然,有些情况下索引器根本没有意义,如果是这样,那就不要实现索引器。恕我直言,如果您尝试修改打包的API,索引器可能是最好的——它不值得为您的工厂业务对象运行。如果您正在制作一些专门的集合,我会将其归类为修改您的打包API-即使您将它们全部放在一个模块中。在您的案例中使用的索引器将是一个TeachersClass类,它将封装学生(集合)和当前教师。虽然您可以通过公开学生列表来执行相同的操作,但它确实向您展示了一个示例。这是一个代码示例:publicclassTeachersClass{privateList_students;publicTeachersClass(TeachercurrentTeacher,Liststudents){CurrentTeacher=currentTeacher;_students=学生;}publicTeacherCurrentTeacher{get;放;}publicStudentthis[intstudentID]get{return(fromsin_studentswheres.Id=studentIDselects).First();}}}索引器允许类或结构的实例像数组一样被索引。索引器类似于属性,只是它们的访问器接受参数。索引器使对象能够以类似于数组的方式进行索引。//C#:索引器使用系统;使用系统集合;类MyClass{私有字符串[]数据=新字符串[5];publicstringthis[intindex]{get{返回数据[index];}设置{数据[索引]]=值;}}}classMyClient{publicstaticvoidMain(){MyClassmc=newMyClass();mc[0]="拉杰什";mc[1]="A3-126";“斯内哈达拉”;mc[3]="伊拉";mc[4]="孟买";Console.WriteLine("{0},{1},{2},{3},{4}",mc[0],mc[1],mc[2],mc[3],mc[4]);}}codeitem我记得有一次我在课堂上花了很长时间,那个特定的long一些数字意味着什么(例如,如果第三个数字是3它意味着图表有某种类型的编码,我知道可怕的系统但我没有发明它)所以我做了这样的事情来返回数字位的第x位:protectedintthis[intindex]{get{inttempN=Number;if(index>0){tempN/=index*10;}返回tempN%10;它受到保护,因为使用了不同的方法,所以它是一个帮助。当然,一个简单的GetDigit(inta)将是同一件事(而且更不言自明),但当时我认为这是我想使用索引器的几次之一。之后就没用过((。以上是C#学习教程:什么时候用C#索引器?全部内容分享,如果对大家有用,需要详细了解C#学习教程,希望你会多多关注—本文采集自网络,不代表立场,如涉及侵权,请点击右下角联系管理员删除。如需转载请注明出处:
