索引器

news/2024/10/18 11:35:11

基础概念

索引器,将一个对象变的可以像数组一样使用下标访问,索引器的创建类似属性,都需要设置Get和Set方法。
创建格式:

type this[int index]
{// get 访问器get{// 返回 index 指定的值}// set 访问器set{// 设置 index 指定的值}
}

注意事项

  • 属性的各种用法同样适用于索引器。 此规则的唯一例外是“自动实现属性”。 编译器无法始终为索引器生成正确的存储。
  • 只要每个索引器的参数列表是唯一的,就可以对一个类型定义多个索引器。

代码示例

IndexNames类创建了基本的索引器,索引器内部对rectangles列表进行操作。

public class IndexNames
{public List<Rectangle> rectangles = new List<Rectangle>();public Rectangle this[int index]{get{if(this.rectangles[index] != null){Rectangle r = rectangles[index];return r;}return null;}set{if (index > 0 && index < rectangles.Count){rectangles[index] = value;}}}public IndexNames(){this.rectangles.Add(new Rectangle(10, 10));this.rectangles.Add(new Rectangle(20, 20));this.rectangles.Add(new Rectangle(30, 30));this.rectangles.Add(new Rectangle(40, 40));}
}

上面代码提到的Rectangle类

public class Rectangle
{// 成员变量protected double length;protected double width;public double Test;public Rectangle(double l, double w){length = l;width = w;}[DeBugInfo(55, "Zara Ali", "19/10/2012",Message = "Return type mismatch")]public double GetArea(){return length * width;}[DeBugInfo(56, "Zara Ali", "19/10/2012")]public void Display(){Console.WriteLine("Length: {0}", length);Console.WriteLine("Width: {0}", width);Console.WriteLine("Area: {0}", GetArea());}public void GetString(){Debug.Log($"Length:{length}width:{width}Area:{GetArea()}");}
}

表现

循环输出索引的内容

        IndexNames indexs = new IndexNames();for (int i = 0; i < indexs.rectangles.Count; i++){indexs[i].GetString();}

输出:

总结

只要类中有类似于属性的元素就应创建索引器,此属性代表的不是一个值,而是值的集合,其中每一个项由一组参数标识。 这些参数可以唯一标识应引用的集合中的项。 索引器延伸了属性的概念,索引器中的一个成员被视为类外部的一个数据项,但又类似于内部的一个方法。 索引器允许参数在代表项的集合的属性中查找单个项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/72994.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

在centos7上安装mysql5.7

1、此处是在MySQL官网获取的rpm包(也可直接在linux中使用yum获取这个rpm包到本地)在MySQL官方网站的最底下找到这个此处选择的MySQL版本5.7.44,操作系统选Oracle Linux,OS版本选择linux 7下载将下载好的二进制文件包上传到centos7中在windows系统中上传文件到虚拟机里面,可…

第36篇 linux服务器上启动framework应用程序流程

framework开发的应用程序,一般是不会在linux服务器上运行的,但是我们可以通过mono进行应用部署 1.查看linux服务上是否已经安装mono-core 方式1: rpm命令查看 rpm -qa | grep mono-core有结果返回,说明已经安装方式2:使用yum list installed yum list installed | grep mo…

GCM

GaloisCounter Mode (GCM) 运算符与函数$0^s$包含了$s$个$0$的比特串。$\mbox{CIPH}_K⁡(X)$在密钥$K$下对分组$X$应用分组密码得到的输出。$\mbox{GCTR}_K⁡(ICB,X)$在密钥K下对包含初始组计数$ICB$的比特串X应用包含给定分组加密的 $\mbox{GCTR}$函数的输出。$\mbox{GHASH}_H…

音频压缩

声音压缩 压缩音频在微信上的播放效果结论:在Pc环境测试后,压缩音频在微信环境中也拥有相同表现。 码率对音质的影响设置总结 将码率设置为64k和原版几乎没有差别,压缩率35% 将码率设置到48k,仔细可以听出些许差别,在对音频要求不高的地方可以使用。 转码率工具 https://w…

创新突破!天翼云荣膺CCF HPC China 2024高性能计算创新大奖

近日,第20届CCF全国高性能计算学术年会(CCF HPC China 2024)在武汉隆重召开。CCF HPC China是全球高性能计算领域三大标志性盛会之一,本届大会以“华章廿载 新质未来”为主题,由12位院士领衔,携手来自算力领域的400多位顶尖学者,进行学术交流和专题分享。近日,第20届CC…

汽车零部件行业CRM应用数字化解决方案解析

1.行业背景与挑战分析 近年来,随着国家对新能源汽车行业的大力支持,国内汽车产业不仅在国内市场实现了弯道超车,而且新能源汽车的海外出口也开拓了新的市场,为自主品牌的新能源战略贡献了新的增长点;这一迅猛发展的趋势也带动了汽车零部件行业的增长。 同时,汽车零部件行…

gjoi 10.18

模拟赛不通知,模拟赛巨大绑包,素质有待降低。T1 向量 不难发现操作次数固定,操作其实相当于在有两位的前提下减少一位,如果和 \(\geq 10\) 花费 \(9\) 的代价加 \(1\) 位。答案肯定是 \(初始位数+额外位数-1\),现在问题是额外位数是什么,不妨设序列和为 \(sum\),额外次数…