索引器定义类似于属性,但其功能与属性并不相同。索引器提供一种特殊的方法编写get和set访问器。属性可以像访问字段一样访问对象的数据,索引器可以使用户像访问数组一样访问类成员。定义索引器的语法如下:

<访问修饰符> 类型名称 this [类型名称 参数名]
{

get{//获得属性的代码}

set{ //设置属性的代码}

}

索引器没有像属性和方法那样的名字,关键字this清楚地表达了索引器引用对象的特征。和属性一样,value关键字在set后的语句块里有参数传递意义。

和方法一样,索引器有5种存取保护级别new、public、protected、internal、private,和4种继承行为修饰virtual、sealed、override、abstract,以及外部索引器。这些行为同方法没有任何差别。唯一不同的是索引器不能为静态(static),这在对象引用的语义下很容易理解。值得注意的是在重写(override)实现索引器时,应该用base[E]来存取父类的索引器。

和属性的实现一样,索引器的数据类型同时为get语句块的返回类型和set语句块中value关键字的类型。

索引器的参数列表也是值得注意的地方。“索引”的特征使得索引器必须具备至少一个参数,该参数位于this关键字之后的中括号内。索引器的参数也只能是传值类型,不可以有ref(引用)和out(输出)修饰。参数的数据类型可以是C#中的任何数据类型。C#根据不同的参数签名来进行索引器的多态辨析。中括号内的所有参数在get和set下都可以引用,而value关键字只能在set下作为传递参数。

定义索引器应注意以下内容:

1、所有索引器都使用this关键词来取代方法名。Class或Struct只允许定义一个索引器,而且总是命名为this。

2、索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。

3、get 访问器返回值。set 访问器分配值。

4、this 关键字用于定义索引。

5、value 关键字用于定义由 set 索引器分配的值。

6、索引器不一定根据整数值进行索引,您可以根据编程要求指定参数类型。

7、索引器可被重载。

8、索引器可以有多个形参,例如当访问二维数组时。

9、索引器的方括号中可以是任意参数列表。

C#索引器-索引器的定义相关推荐

  1. 【转】C#索引器-索引器的定义

    索引器定义类似于属性,但其功能与属性并不相同.索引器提供一种特殊的方法编写get和set访问器.属性可以像访问字段一样访问对象的数据,索引器可以使用户像访问数组一样访问类成员.定义索引器的语法如下: ...

  2. MongoDB 教程五: MongoDB固定集合和性能优化 (索引Indexes, 优化器, 慢查询profile)

    mongodb索引详解(Indexes) 索引介绍 索引在mongodb中被支持,如果没有索引,mongodb必须扫描每一个文档集合选择匹配的查询记录.这样扫描集合效率并不高,因为它需要mongod进 ...

  3. C#索引器-索引器概述

    数组中的元素可以通过索引进行检索,如果一个类中有很多对象,怎样简单.快速地查找到需要的对象以及对象的特性呢?索引器就是为了实现这样的功能而设计的.索引器允许类或结构的实例按照与数组相同的方式进行索引. ...

  4. mysql5.5索引如何定义_MySQL5.5索引数在InnoDB引擎内与索引数在mysql中定义的数量是不一致问题-阿里云开发者社区...

    在查看MySQL错误日志的时候发现这样的错误,如下: 160322 21:42:59 [ERROR] Table baby/baby_order contains 12 indexes inside ...

  5. IO接口以太网低频工业RFID读写器|读取器CK-LR12-E00之Modbus TCP的寄存器定义与说明

    IO接口以太网低频工业RFID读写器|读取器CK-LR12-E00是一款支持Modbus TCP通讯协议的工业以太网RFID数据读取设备,广泛应用于自动化MES系统领域,其MODBUS 寄存器为16b ...

  6. mysql维护索引,mysql 索引优化

    Sql代码 CREATE INDEX idx_example ON table1 (col1 ASC, col2 DESC, col3 ASC)CREATE INDEX idx_example ON ...

  7. not null primary key什么意思_为什么我使用了索引,索引却没有生效?

    关注我们,设为星标,每天7:00不见不散,每日java干货分享 作者:张飞洪 https://www.cnblogs.com/jackyfei/p/12122767.html 经常有同学问我,我的一个 ...

  8. 翻译:探索GLSL-用几何着色器(着色器库)实现法线可视化

    翻译:探索GLSL-用几何着色器(着色器库)实现法线可视化 翻译自: Exploring GLSL – Normal Visualizer with Geometry Shaders (Shader ...

  9. mysql 派生表 索引_MySQL 索引初探

    MYSQL索引 什么是索引 为什么要建立索引 索引的优缺点和使用原则 索引的分类 单列索引:一个索引只包含单个列,但一个表中可以有多个单列索引. 普通索引:MySQL中基本索引类型,没有什么限制,允许 ...

最新文章

  1. FLUSH TABLES WITH READ LOCK 和 LOCK TABLES
  2. Python如何进行内存管理?
  3. 项目实战4—HAProxy实现高级负载均衡实战和ACL控制
  4. 《30天自制操作系统》前言、目录、样章欢迎阅读!
  5. 深入浅出KNN算法(二) sklearn KNN实践
  6. html边框为框,HTML 为元素设置边框
  7. java五子棋_Java初级项目——从零开始制作一个简易五子棋游戏
  8. linux centos7磁盘分区扩容,centos7 xfs文件系统的磁盘扩容
  9. springboot执行批量插入_springboot+Mybatis 注解\Xml两种方式批量添加数据
  10. [转]短篇小说《来》
  11. java字段描述符_Java 的方法签名与字段类型表示-[Ljava.lang.String;
  12. 用C语言实现字符串的右旋
  13. 2022-2028全球电动汽车电池冷却器行业调研及趋势分析报告
  14. html怎么设置火狐ie兼容模式,火狐浏览器兼容模式如何设置?火狐浏览器兼容模式设置方法分享...
  15. 《智能商业》由阿里巴巴学术委员会主席、前总参谋长曾鸣亲自编写,值得一读!
  16. jmeter里看java的log,jmeter中java协议请求
  17. 【DVE命令报错,yum本地源配置】error while loading shared libraries:libtermcap.so.2
  18. ubuntu 16.04怎么更改文件夹里面所有子文件权限
  19. 联想笔记本 售后/驱动 下载地址
  20. 四种最优化方法复盘总结

热门文章

  1. 我辞职了!“没有Python编程经验的我,连简历都不敢投”
  2. python之面向对象的程序设计(一)
  3. 计算机配置打开命令行,电脑cmd命令可以打开电脑属性,知道怎么设置
  4. Linux自建steam饥荒服务器教程,【图片】Steam饥荒联机版专用服务器快速搭建教程_饥荒联机吧_百度贴吧...
  5. QT Graphics View
  6. 智能制造:有大数据不一定能成,但没有一定不能成
  7. 【商城秒杀项目】-- 概况
  8. 常见的HTTP方法有哪些?
  9. 智慧酒店方案打造独特的智能化科技体验
  10. Python在图片上绘制指定半径的圆