首页 > 学院 > 开发设计 > 正文

C#中的索引器

2019-11-08 02:14:52
字体:
来源:转载
供稿:网友

  最近看面试题也好,敲手头书上的例子也好,都让我看到了索引器这个概念,原来没有接触过,今天就来看看什么是C#中的索引器

索引器允许类或结构的实例就像数组一样进行索引。 索引器类似于属性,不同之处在于他们的取值函数采用参数

用在哪里

  索引器经常是在主要用于封装内部集合或数组的类型中实现的。假如,假定具有一个名为TemPRecord的类,此类表示在24小时内的10个不同时间记录的华氏温度。此类包含一个表示温度的Float类型的名为“temps”的数组和表示记录温度的日期的DateTime

  通过在此类中实现一个索引器,客户端可以通过float temp=tr[4]而不是float temp=tr.temps[4]语法访问此类实例出对象的温度

语法结构:声明类或结构上的索引器,要使用this关键字

//[修饰符] 数据类型 this[索引类型 index]{ get{//获得属性的代码} set{ //设置属性的代码}}

Demo

/// <summary> /// 最简单的索引器 /// </summary> public class Person { //声明私有数组 private string[] hero = new string[5] { "老白","小粉" , "炸鸡哥", "空姐", "Hank" }; public int Length { get { return hero.Length; } } //声明索引 public string this[int index] { get { return hero[index]; } set { hero[index] = value; } } class Program { static void Main(string[] args) { Person breakingbad = new Person(); //使用索引器设置值 breakingbad[3] = "谢耳朵"; breakingbad[4] = "潘妮"; //使用索引器获得值 for (int i = 0; i < 5; i++) { System.Console.WriteLine("元素 #{0} = {1}", i, breakingbad[i]); } System.Console.WriteLine("Press any key to exit."); System.Console.ReadKey(); } } }

这里写图片描述

索引器和属性的比较

1.相同点

1).索引和属性都不用分配内存位置来存储。

2).索引和属性都是为类的其它成员提供访问控制的。

3).索引和属性都有get访问器和set访问器,它们可以同时声明两个访问器,也可以只声明其中一个。

2.不同点

1).属性通常表示单独的数据成员,而索引表示多个数据成员。2).属性既可以声明为实例属性,也可以声明为静态属性,而索引不能声明为静态的。3).属性有简洁的自动实现属性,而索引必须声明完整。4).get访问器:属性的 get 访问器没有参数,索引器的 get 访问器具有与索引器相同的形参表。 5).set访问器:属性的 set 访问器包含隐式 value 参数。除了值参数外,索引器的 set 访问器还具有与索引器相同的形参表。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表