博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#索引器-索引器与数组属性的比较
阅读量:5160 次
发布时间:2019-06-13

本文共 1557 字,大约阅读时间需要 5 分钟。

索引器(Indexer)

索引器允许类或结构的实例按照与数据相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。所以索引器也被称为有参属性。
示例一:

using System ;

class ArrClass//没有索引器的类

{
private readonly string name;
public ArrClass(string name)
{
this.name = name;
}
public string Name
{
get{return name;}
}
}

class IndexClass//带索引器的类
{
private string [] name = new string [10];
public string this[int index]
{
get{return name[index];}
set{name[index] = value;}
}
//索引器与属性不同的是,这里没有属性名,而是用this表示索引。
//索引的定义与方法不同的是,用方括号[],而不是圆括号(),同时索引的定义中没有方法名,只用this。
//索引的使用像数组,都使用[],但与数组不同的是,数组的[]中只能使用整数作下标,而索引的[]中可以使用各种类型。
//索引也可以重载,同一个类中的多个索引要求参数列表(签名)必须不同,即:或者参数个数不同,或者是参数类型不同,或者参数类型的顺序不同。
}
class Test
{
static void Main()
{
//数组类的使用
ArrClass[] a = new ArrClass[10];
a[0] = new ArrClass ("张三");
a[1] = new ArrClass ("李四");
a[2] = new ArrClass ("王五");
Console.WriteLine (a[0].Name);
Console.WriteLine (a[1].Name);
Console.WriteLine (a[2].Name);
//索引器的使用
IndexClass b = new IndexClass ();
b[0] = "张三";
b[1] = "李四";
b[2] = "王五";
Console.WriteLine (b[0]);
Console.WriteLine (b[1]);
Console.WriteLine (b[2]);
}
}

-------------------------

索引器与数组的比较

1>索引器的索引值(Index)类型不受限为整数

用来访问数组的索引值(Index),其类型一定为整数,然而索引器可以定义其他类型的索引值。

2>索引器允许重载(Overloading)

一个类并不限制只能够定义一个索引器,只要索引器的函数签名不同,一个类就可以拥有很多个索引器,你可以重载它的功能。

3>索引器不是一个变量

索引和数组不同的地方在于,索引器并没有直接对应引用数据存储的地方,而数组则有。索引器有get访问器与set访问器,用来指明要读取或写入索引器元素时,需要执行的代码。

---------------------------

索引器与属性的不同点:

标识方式:属性以名称来标识;索引器则以函数签名来标识。

索引器可以被重载:因为属性时以名称标识的,所以不能被重载;索引器是用函数签名标识的,因此可以重载。

索引器不可以声明为static:属性可以为static,而索引器永远属于实例成员,不能为static

转载于:https://www.cnblogs.com/tanding/archive/2012/06/27/2565291.html

你可能感兴趣的文章
Java网络编程--socket服务器端与客户端讲解
查看>>
List_统计输入数值的各种值
查看>>
学习笔记-KMP算法
查看>>
Timer-triggered memory-to-memory DMA transfer demonstrator
查看>>
跨域问题整理
查看>>
[Linux]文件浏览
查看>>
64位主机64位oracle下装32位客户端ODAC(NFPACS版)
查看>>
获取国内随机IP的函数
查看>>
今天第一次写博客
查看>>
江城子·己亥年戊辰月丁丑日话凄凉
查看>>
IP V4 和 IP V6 初识
查看>>
Spring Mvc模式下Jquery Ajax 与后台交互操作
查看>>
(转)matlab练习程序(HOG方向梯度直方图)
查看>>
『Raid 平面最近点对』
查看>>
【ADO.NET基础-数据加密】第一篇(加密解密篇)
查看>>
C语言基础小结(一)
查看>>
STL中的优先级队列priority_queue
查看>>
UE4 使用UGM制作血条
查看>>
浏览器对属性兼容性支持力度查询网址
查看>>
OO学习总结与体会
查看>>