本文实例分析了asp.net中索引器的用法。分享给大家供大家参考。具体如下:+ V6 n# t8 ]8 C H! m
索引器定义类似于属性,但其功能与属性并不相同.索引器提供一种特殊的方法编写get和set访问器.属性可以像访问字段一样访问对象的数据,索引器可以使用户像访问数组一样访问类成员." h2 |" n* v; I( G1 U: Z- c
一、索引器特性
7 i/ I# f( H; g9 w! m% h1、get 访问器返回值。set 访问器分配值。2 K1 P' E7 u. y2 W1 V* E) p
2、this 关键字用于定义索引器。
' r! b% v" _2 I5 O0 G' g# [3、value 关键字用于定义由 set 索引器分配的值。1 y* O% Z8 ]5 E* s4 p8 S4 `. I" I
4、索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。
4 ?( V8 g! ^. _( u5、索引器可被重载。* _1 l1 m s; |* D* K
6、索引器可以有多个形参,例如当访问二维数组时。! a7 N# z% ~$ e4 L) u- c; x( b
7、索引器使得对象可按照与数组相似的方法进行索引。
, B- ~) H _! H7 z二、定义索引器的方式与定义属性有些类似,其一般形式如下:
6 o; L: Y$ H" n+ g- j复制代码 代码如下:[修饰符] 数据类型 this[索引类型 index]
( S& E! Y, z3 a f3 A2 e C{
5 J5 J6 ]* y* Y2 y1 X" b- Wget{//获得属性的代码}
) P+ l; ~( t: f2 ~2 @: [. \set{ //设置属性的代码}" E+ y1 m* k4 M5 ?$ l' S
}
3 b2 R: {6 X/ v% b; f3 F和方法一样,索引器有5种存取保护级别new、public、protected、internal、private,和4种继承行为修饰virtual、sealed、override、abstract,以及外部索引器.这些行为同方法没有任何差别.唯一不同的是索引器不能为静态(static),这在对象引用的语义下很容易理解.值得注意的是在重写(override)实现索引器时,应该用base[e]来存取父类的索引器.% v/ h ]( D. e) ~/ v0 ?; S
三、索引器代码示例* f% e) f9 l* Y% c0 E q Q/ o4 s+ S7 D
c#代码如下:# ?( s, U! N0 m9 d4 y! u# ^5 f
复制代码 代码如下:class samplecollection<t>1 c! i- F' s9 z2 _ s) f
{# n" n" J, h; \* n& c1 i' ?
private t[] arr = new t[100];6 ~2 [" C1 e# s
public t this[int i]
+ t6 o. Y3 j1 C: ^! d1 s. b{1 D) G/ G. V6 S4 h$ N
get; L) D6 T9 I) Q6 P( ] s. U( n" i
{0 u* w" o @' s. n
return arr[i];
o# O- _5 D: N7 T" i}9 O7 D( @" y! Y4 J" C+ x
set v, j4 d* R; g/ Y4 h
{# w8 [4 P; x3 E, N
arr[i] = value;1 l# n3 m/ P. P: W
}1 C9 |0 P0 V' R* e" @( I9 v4 @. N& I
}8 ?5 W u& j& i; A) X# h2 Q! y5 w0 {! j
}9 b/ M! v+ R9 u- q4 s" H& t1 p6 K
class program
' |( B) v% {& x4 N, H+ C) B n8 s{7 Y+ b8 g+ c' Q: u% w( B
static void main(string[] args)* H3 D7 m3 L6 |1 w7 \% J+ Y
{) {. t# K8 C9 ?4 ?3 Y1 a6 Q
samplecollection<string> stringcollection = new samplecollection<string>();# m- z- S5 `( Z2 f
stringcollection[0] = hello, world;
/ @0 k( p) Y: M# q4 B4 S% u/ d0 C- _system.console.writeline(stringcollection[0]);2 ?: X. M8 _3 l! H8 `
}
9 s8 ~+ `2 o3 D/ r2 P3 w6 \}
0 y4 g0 Z: R/ a; z' }四、定义索引器应注意以下内容:
( J; p: A9 E# x% X$ L$ X) r1、所有索引器都使用this关键词来取代方法名.class或struct只允许定义一个索引器,而且总是命名为this.
3 v7 i( V* K" @! {1 m2、索引器允许类或结构的实例按照与数组相同的方式进行索引.索引器类似于属性,不同之处在于它们的访问器采用参数.3 `% I$ T( Y! e) L
3、索引器不一定根据整数值进行索引,您可以根据编程要求指定参数类型.
# N' ~1 j Q, t, V* y; A希望本文所述对大家的c#程序设计有所帮助。
% _6 P+ w/ i, ^9 f. I' D3 R9 j- K
" N! K. ]8 w* |$ e更多网页制作信息请查看: 网页制作 |
|