C#中索引器和属性类似,但也有一些区别:

a、    属性可以调用方法就如同他们是公共数据成员,而索引器可以调用对象上得方法,如同对象是一个数组。

b、    属性可以通过简单的名称访问, 而索引器需要通过索引器访问。

c、    属性可以为静态成员或者实例成员,而索引器必须是实例成员。

d、    属性的get访问器没有参数, 而索引器上的get访问器具有与索引器相同的形参表。

e、    属性的set访问器包含隐式value参数,而对于索引器,除了value参数外,索引器的set访问器还具有与索引器相同的形参表。

        索引器使得对象可按照与数组相似的方法进行索引,索引器可被重载,当访问二维数组时可以有多个形参;索引器不必根据整数值进行索引,由你决定如何定义特定的查找机制;要声明类或结构上的索引器,请使用this关键字。

using System;
using System.Collections.Generic;
using System.Text;
namespace Index
{class sample<T>  //这个类告诉我们如何使用客户端代码索引器{private T[] arr = new T[100];public T this[int i] //索引器的签名由其形参的数量和类型组成。{get { return arr[i];}set { arr[i] = value;}}}    class IndexerClass{private int[] arr = new int[100]; //定义数组public int this[int index]   //索引器声明{get{if (index < 0 || index >100)  return 0;return arr[index];}set{if (!(index < 0 || index > 100))  arr[index] = value; }}}class String_index{string[] days = { "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat" };private int GetDay(string testday){int i = 0;foreach(string day in days){if (day == testday)  return i;i++;}return -1;}public int this[string day]{get{ return GetDay(day); }}}class Program{static void Main(string[] args){sample<string> string_value = new sample<string>();string_value[0] = "Hello world";System.Console.WriteLine(string_value[0]);IndexerClass test = new IndexerClass();//调用索引器初始化第2、4个数据test[3] = 123;test[5] = 1024;for (int i = 0; i <= 10; i++ ){ System.Console.WriteLine("数据为#{0} = {1}", i, test[i]);}String_index week = new String_index();System.Console.WriteLine("这是一周的第{0}天", week["Tues"]);Console.ReadKey();}}
}

C#索引器与属性的区别、索引器的具体使用相关推荐

  1. C#索引器-索引器和属性的区别

    属性和索引器的差别:一个对象只有一个属性值,所以要存放多个值必须实例化多个对象(通常情况下,实例化一个数组的对象,接着实例化的对象赋给这个数组).一个对象对应的索引是一个数组,并且可以存放多个数值或字 ...

  2. C#索引器的实现、索引器和属性的异同对比,这些技能你get到了嘛?

    目录 什么是索引器? 如何声明索引器? 索引器和属性的异同对比 索引器实例分析 Hello!大家好,我是努力赚钱买生发水的灰小猿! 最近在用C#做开发的时候要用到索引函数,所以今天就在这里和小伙伴记录 ...

  3. C#——什么是索引器?索引器的作用是什么?索引器与属性有哪些区别?

    (1)索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写. (2)索引器允许类和结构的实例按照与数组相同的方式进行索引 (3)索引器与属性都是类的成员,语法 ...

  4. 3.Lucene3.x API分析,Director 索引操作目录,Document,分词器

     1  Lucene卡发包结构分析 包名 功能 org.apache.lucene.analysis Analysis提供自带的各种Analyzer org.apache.lucene.colla ...

  5. 索引,主键,唯一索引,联合索引的区别

    https://blog.csdn.net/qq_33275924/article/details/80220797 https://www.cnblogs.com/ymj0906/p/4240856 ...

  6. 索引,主键,唯一索引,联合索引 的区别

    简单描述MySQL中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响 索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用 ...

  7. mysql索引innodb和myisam的区别

    引用 引用 区别 InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一 ...

  8. 索引的类型分类、区别、优缺点

    导读:索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引.MyISAM和InnoDB存储引擎:只支持BTREE索引,也就是说默认使用BTREE,不能够更换.MEMORY/HEAP存储引 ...

  9. MySQL 常见索引的使用场景与区别(SQL小技巧)

    作者:贺禧年_码农 blog.csdn.net/weixin_46163590/article/details/106047978 一.MySQL索引类型: MySql常见索引类型有:主键索引.唯一索 ...

最新文章

  1. 基于Centos7的autobahn-python+crossbar的环境搭建
  2. 智能指针unique_ptr
  3. web签名验证程序【跨服务器、中文字符签名方法】-php为例
  4. android 定时语音,android 定时语音天气播报
  5. 政企边缘安全,如何助您提升企业免疫力?
  6. Extjs Window用法详解 2 打印具体应用
  7. 【Python生成器与迭代器的区别】
  8. html二级页面内容滑动,jQuery+CSS实现的网页二级下滑菜单效果
  9. Java List接口概述
  10. mysql用户变量_MySQL用户变量的用法
  11. C#使用正则表达式检测数字 char 和韩文
  12. [转载] numpy.arctan, math.atan, math.atan2的区别
  13. 学习iptables
  14. Java基础0308
  15. vba获取通达信光标的坐标数据_如何把缠论分笔公式在移动端手机版通达信缠论画笔公式安装...
  16. “拼命”奔跑的社区团购
  17. 为什么MES系统等数字化管理系统,在印刷行业应用发展得如此迅速
  18. java.lang.ArithmeticException: Rounding necessary
  19. U3D Anchors
  20. audition cc变声插件_Adobe Audition CC怎么安装插件?

热门文章

  1. 北大青鸟:手机软件开发指引
  2. 计算机重启的两种方法,win10如何重启电脑快速方法有几种
  3. 面试官:熟悉SQL优化吗?我只知道20种,其实远不止...
  4. 上交计算机考研录取分数线,上海交通大学研究生录取分数线
  5. 理解时空涟漪引力波,只需看这个三个问题
  6. 中小学教学与管理的44个小创意(转)
  7. 群晖218和218+区别_希捷企业级硬盘和希捷酷狼硬盘有什么区别
  8. 全志V3S裸机 SDRAM内存初始化(并使用SDRAM启动仿真)
  9. mysql集群保证数据一致性
  10. 【shell】万能解压脚本