C#索引器与属性的区别、索引器的具体使用
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#索引器与属性的区别、索引器的具体使用相关推荐
- C#索引器-索引器和属性的区别
属性和索引器的差别:一个对象只有一个属性值,所以要存放多个值必须实例化多个对象(通常情况下,实例化一个数组的对象,接着实例化的对象赋给这个数组).一个对象对应的索引是一个数组,并且可以存放多个数值或字 ...
- C#索引器的实现、索引器和属性的异同对比,这些技能你get到了嘛?
目录 什么是索引器? 如何声明索引器? 索引器和属性的异同对比 索引器实例分析 Hello!大家好,我是努力赚钱买生发水的灰小猿! 最近在用C#做开发的时候要用到索引函数,所以今天就在这里和小伙伴记录 ...
- C#——什么是索引器?索引器的作用是什么?索引器与属性有哪些区别?
(1)索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写. (2)索引器允许类和结构的实例按照与数组相同的方式进行索引 (3)索引器与属性都是类的成员,语法 ...
- 3.Lucene3.x API分析,Director 索引操作目录,Document,分词器
1 Lucene卡发包结构分析 包名 功能 org.apache.lucene.analysis Analysis提供自带的各种Analyzer org.apache.lucene.colla ...
- 索引,主键,唯一索引,联合索引的区别
https://blog.csdn.net/qq_33275924/article/details/80220797 https://www.cnblogs.com/ymj0906/p/4240856 ...
- 索引,主键,唯一索引,联合索引 的区别
简单描述MySQL中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响 索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用 ...
- mysql索引innodb和myisam的区别
引用 引用 区别 InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一 ...
- 索引的类型分类、区别、优缺点
导读:索引是在存储引擎中实现的,也就是说不同的存储引擎,会使用不同的索引.MyISAM和InnoDB存储引擎:只支持BTREE索引,也就是说默认使用BTREE,不能够更换.MEMORY/HEAP存储引 ...
- MySQL 常见索引的使用场景与区别(SQL小技巧)
作者:贺禧年_码农 blog.csdn.net/weixin_46163590/article/details/106047978 一.MySQL索引类型: MySql常见索引类型有:主键索引.唯一索 ...
最新文章
- 基于Centos7的autobahn-python+crossbar的环境搭建
- 智能指针unique_ptr
- web签名验证程序【跨服务器、中文字符签名方法】-php为例
- android 定时语音,android 定时语音天气播报
- 政企边缘安全,如何助您提升企业免疫力?
- Extjs Window用法详解 2 打印具体应用
- 【Python生成器与迭代器的区别】
- html二级页面内容滑动,jQuery+CSS实现的网页二级下滑菜单效果
- Java List接口概述
- mysql用户变量_MySQL用户变量的用法
- C#使用正则表达式检测数字 char 和韩文
- [转载] numpy.arctan, math.atan, math.atan2的区别
- 学习iptables
- Java基础0308
- vba获取通达信光标的坐标数据_如何把缠论分笔公式在移动端手机版通达信缠论画笔公式安装...
- “拼命”奔跑的社区团购
- 为什么MES系统等数字化管理系统,在印刷行业应用发展得如此迅速
- java.lang.ArithmeticException: Rounding necessary
- U3D Anchors
- audition cc变声插件_Adobe Audition CC怎么安装插件?