本文实例分析了asp.net中索引器的用法。分享给大家供大家参考。具体如下:, d! G0 E& ^; I; R2 ?/ T
索引器定义类似于属性,但其功能与属性并不相同.索引器提供一种特殊的方法编写get和set访问器.属性可以像访问字段一样访问对象的数据,索引器可以使用户像访问数组一样访问类成员.
# z! o# v# w, Q V* d一、索引器特性& }/ y4 K* _ V1 p' s$ f
1、get 访问器返回值。set 访问器分配值。4 R9 D, I6 B0 P9 s# S) u
2、this 关键字用于定义索引器。
/ @' I: y4 Z. f3、value 关键字用于定义由 set 索引器分配的值。
0 p3 _$ {4 h, h1 T* z* s- ~4、索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。
* C% y( o% R; m; a8 T1 V X/ U: \5、索引器可被重载。
$ w6 \3 N3 I q$ J/ ^# L6、索引器可以有多个形参,例如当访问二维数组时。
! J {6 d( Z _( Q* N: y. ~7、索引器使得对象可按照与数组相似的方法进行索引。
! J/ {0 _5 M0 o* u; }2 a6 v二、定义索引器的方式与定义属性有些类似,其一般形式如下:6 @8 ]$ v# S( a0 K) s
复制代码 代码如下:[修饰符] 数据类型 this[索引类型 index]
1 \) f7 M% k; a$ l* A2 j{
* n; x3 I% T& h; C4 n2 O }2 Iget{//获得属性的代码}
1 b1 c2 c# i0 `0 B. Vset{ //设置属性的代码}! z8 m! v ^3 k+ K. q; V; t# j! M! K& D
}
: S- n2 C9 {) \& g. R; S" H# Y% h和方法一样,索引器有5种存取保护级别new、public、protected、internal、private,和4种继承行为修饰virtual、sealed、override、abstract,以及外部索引器.这些行为同方法没有任何差别.唯一不同的是索引器不能为静态(static),这在对象引用的语义下很容易理解.值得注意的是在重写(override)实现索引器时,应该用base[e]来存取父类的索引器.
5 u- ^. F* r* b; R; ~# E+ X! v0 X9 h三、索引器代码示例1 Y/ J4 a, L; l- R$ ~" X! c
c#代码如下:+ d* Z6 D+ X, ^- e, M3 O; v; @
复制代码 代码如下:class samplecollection<t>
3 {! `/ @# g6 n9 F- A/ K{& h) R3 d* z( y L. h* c8 s: i
private t[] arr = new t[100];6 d" z5 o8 N( J1 n5 O
public t this[int i]/ }. D* z, A6 m5 C, ]5 Z# V0 c9 ^
{4 n0 |' y4 j p5 P" C2 y& w
get
8 Z7 G0 _" D- F9 Z; F+ c. e{
; t" M) }0 }" s freturn arr[i];4 t5 _7 Z! f: x
}
5 I; w) m; ?/ a# i9 kset! F/ o+ v* [& w7 L
{: G9 q+ _ n; k G5 G5 s$ q
arr[i] = value;7 J& A- X$ O0 G) D+ H% {8 \
}
7 `, V( [4 [& k* x% S+ c- ^* j2 t}+ B" X/ g5 v7 b/ S8 C
}9 P, }$ [) a5 X" u
class program
# } b& I" T3 l! x{
9 ~- \$ m" c9 z3 f5 n: t/ jstatic void main(string[] args)
7 p( J1 n( q' L9 Q{
0 k9 |3 \. ^+ K8 X5 }/ isamplecollection<string> stringcollection = new samplecollection<string>();
( K$ j" c) `: z3 k, U6 M$ `: Xstringcollection[0] = hello, world;7 k# f! `; b* ~( {7 ~: Z
system.console.writeline(stringcollection[0]);
, g- e4 B) K) [# Y7 G8 k}
& c, |9 O. g0 v( |$ R4 E; t}
" L; \' P0 p4 T9 X四、定义索引器应注意以下内容:2 c! e2 A% k L9 e: O, }
1、所有索引器都使用this关键词来取代方法名.class或struct只允许定义一个索引器,而且总是命名为this.
4 C8 }+ ^, q% M/ T% ~. O' ]2、索引器允许类或结构的实例按照与数组相同的方式进行索引.索引器类似于属性,不同之处在于它们的访问器采用参数.
+ X9 K" S, |* ]7 n- h# ^3、索引器不一定根据整数值进行索引,您可以根据编程要求指定参数类型.
. j& _! T, O7 H3 \" Y3 A8 d6 L6 g希望本文所述对大家的c#程序设计有所帮助。2 h# t( c% Q* A4 v
- k }, m( f7 ~. E0 `6 Q
更多网页制作信息请查看: 网页制作 |
|