-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIndexer
73 lines (56 loc) · 2.26 KB
/
Indexer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
什么是索引器?
比如说我们访问一个数组,很多情况下我们都会通过下标来遍历数组,这个下标我们通常称之为索引。简单来说索引就是能用来查找的某个或者某类东西的。
简单说来,所谓索引器就是一类特殊的属性,通过它们你就可以像引用数组一样引用自己的类。
显然,这一功能在创建集合类的场合特别有用,而在其他某些情况下,比如处理大型文件或者抽象某些有限资源等,能让类具有类似数组的行为当然也是非常有用的。比如,假设一个班级有若干个学生,构建索引器就可以很方便处理相应的数据。
既然说索引器是特殊的属性,我们对比一下索引器和属性吧。
索引器和属性的不同点
(1)属性以名称来标识,索引器以函数形式标识,这个体现在调用的时候。
(2)索引器可以被重载,属性不可以,这个体现在定义的时候。
(3)索引器不能声明为static,属性可以;索引器总是实例成员,不能声明为static。
索引器和数组比较:
(1)索引器的索引值(Index)类型不受限制
(2)索引器允许重载
(3)索引器不是一个变量
索引器的表现形式:
public int this[string index]
{
set
{
SetAccessorCode
}
get
{
GetAccessorCode
}
}
(1)Set访问器:
Type this[ParameterList]
{
set
{
AccessorBody
}
}
void set(ParameterList, Type value)
{
AccessorBody
}
(2)get访问器
Type this[ParameterList]
{
get
{
AccessorBody
}
return ValueOfType
}
Type get(ParameterList)
{
AccessorBody
return ValueOfType
}
转化之后会发现属性其实也应该是这么干的。。
这个和属性是一样的不能显式调用get和set访问器。
索引器重载:
正常情况下,一个类中的方法重载只要返回类型或者参数不同就行,但是在索引器中还是有些不太一样。
索引器的重载要求必须要有不同的参数列表。