本文实例分析了asp.net中索引器的用法。分享给大家供大家参考。具体如下:
2 v* e5 p5 i. G6 X4 @5 M; P+ n索引器定义类似于属性,但其功能与属性并不相同.索引器提供一种特殊的方法编写get和set访问器.属性可以像访问字段一样访问对象的数据,索引器可以使用户像访问数组一样访问类成员.
1 S" P1 `! P( P, i$ ?一、索引器特性
9 ~( D( E, p5 [- c1、get 访问器返回值。set 访问器分配值。/ B" }% s2 K: |5 `/ D8 H
2、this 关键字用于定义索引器。; S2 {* C) Q7 H1 ~; w
3、value 关键字用于定义由 set 索引器分配的值。$ _7 X" D4 g) F4 A
4、索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。, i1 [$ f' k% T2 ^5 c" j" V
5、索引器可被重载。 D" c% J- d2 |
6、索引器可以有多个形参,例如当访问二维数组时。8 I2 o& M9 e) D7 q/ B/ e) }, H
7、索引器使得对象可按照与数组相似的方法进行索引。* u0 T% l2 d4 _! W
二、定义索引器的方式与定义属性有些类似,其一般形式如下:' @4 o( P, r. @/ ]
复制代码 代码如下:[修饰符] 数据类型 this[索引类型 index]
K" x- T* z) B7 X: p{1 E- C3 v# Z: j) s* p% T/ u
get{//获得属性的代码}
5 p$ ` ~+ _7 Q* \, Tset{ //设置属性的代码}
/ ], P4 M5 w \) J: W7 M}( s( w) ~! X5 m$ V: `
和方法一样,索引器有5种存取保护级别new、public、protected、internal、private,和4种继承行为修饰virtual、sealed、override、abstract,以及外部索引器.这些行为同方法没有任何差别.唯一不同的是索引器不能为静态(static),这在对象引用的语义下很容易理解.值得注意的是在重写(override)实现索引器时,应该用base[e]来存取父类的索引器.5 R' d* ^/ ^0 p0 l- S& T/ I
三、索引器代码示例0 l3 ]( } a* }, Y& J* K6 \4 N
c#代码如下:
, \& Y4 B5 F' Q0 W8 p0 D1 ^' P复制代码 代码如下:class samplecollection<t>
# _! I9 f7 c% ~3 G{
3 u3 g5 w' v- d. ~0 @) z( K/ Eprivate t[] arr = new t[100];
* O, i( x3 L) \( Dpublic t this[int i]# ]: u5 D8 e1 u
{
+ {/ n: ]2 P ~+ fget& t' P$ G9 c/ C4 `0 q ^( ^, o
{
; w/ @1 X8 i. ereturn arr[i];
2 d4 T5 \5 y9 h1 ]/ l}% O( ?# [9 y! p" v. F2 v
set
- |( i% ]1 S1 J& |9 ?1 ^{
7 y* i8 f1 g8 Carr[i] = value;
" k# c& z1 A6 w6 \' w- G}9 [/ n6 g" c K1 n
}" G! H; Y1 R: r/ M4 ^3 N
}0 @4 t3 G! B W# u8 s' G: d/ a
class program
. E! q7 b5 T6 K- h7 Z7 d) ]{
/ J& c; J e' L2 o9 J* cstatic void main(string[] args)
8 N6 M( Y0 H; A{; X( H. Y, t/ ~" a* Y) {5 I! k
samplecollection<string> stringcollection = new samplecollection<string>();0 T5 _' z2 n# ^0 R: X
stringcollection[0] = hello, world;
4 K6 g' ^5 {2 F$ k# t. ysystem.console.writeline(stringcollection[0]);; W, t* o, ?( W; H) l1 n- Q( `: ^
}
& x! E3 Y: Y' p+ C$ n$ r+ o}! S% Q& G4 t, s4 h7 K) u9 Y/ s
四、定义索引器应注意以下内容:# f! r* i, \7 B7 G, |4 P
1、所有索引器都使用this关键词来取代方法名.class或struct只允许定义一个索引器,而且总是命名为this.* _2 w) f* q* H% g* f! C
2、索引器允许类或结构的实例按照与数组相同的方式进行索引.索引器类似于属性,不同之处在于它们的访问器采用参数.! _/ u, }- K0 |5 k4 ^/ `0 P+ b G
3、索引器不一定根据整数值进行索引,您可以根据编程要求指定参数类型.
+ d2 F% p1 P& @7 W6 V; G7 L: s r2 H希望本文所述对大家的c#程序设计有所帮助。. s& U+ y9 M: @6 ?4 L
& S# C3 S+ M, Y4 x# t" i: ]. L更多网页制作信息请查看: 网页制作 |
|