最近看面试题也好,敲手头书上的例子也好,都让我看到了索引器这个概念,原来没有接触过,今天就来看看什么是C#中的索引器
索引器允许类或结构的实例就像数组一样进行索引。 索引器类似于属性,不同之处在于他们的取值函数采用参数
索引器经常是在主要用于封装内部集合或数组的类型中实现的。假如,假定具有一个名为TemPRecord的类,此类表示在24小时内的10个不同时间记录的华氏温度。此类包含一个表示温度的Float类型的名为“temps”的数组和表示记录温度的日期的DateTime
通过在此类中实现一个索引器,客户端可以通过float temp=tr[4]而不是float temp=tr.temps[4]语法访问此类实例出对象的温度
1.相同点
1).索引和属性都不用分配内存位置来存储。
2).索引和属性都是为类的其它成员提供访问控制的。
3).索引和属性都有get访问器和set访问器,它们可以同时声明两个访问器,也可以只声明其中一个。2.不同点
1).属性通常表示单独的数据成员,而索引表示多个数据成员。2).属性既可以声明为实例属性,也可以声明为静态属性,而索引不能声明为静态的。3).属性有简洁的自动实现属性,而索引必须声明完整。4).get访问器:属性的 get 访问器没有参数,索引器的 get 访问器具有与索引器相同的形参表。 5).set访问器:属性的 set 访问器包含隐式 value 参数。除了值参数外,索引器的 set 访问器还具有与索引器相同的形参表。新闻热点
疑难解答