Паролингизни унутдингизми?
Login
Left, Right, Center Left, Center, Right Center, Left, Right



Индексаторлар

Индексаторлар

c-sharpБарчамизга маълумки, си шарпда хоссаларни get аксессор методлари параметрсиз бўлади. Шунинг учун уларни параметрсиз хоссалар деб аташимиз мумкин. Бундай хоссаларни тушуниш осон чунки улар билан ишлашлик худди майдонлар билан ишлагандек туюлади. Параметрсиз хоссалар бўлгани каби, параметрли хоссалар хам мавжуд.

 

Уларни get аксессор методлари бир ёки унадн кўп параметрларни ва set аксессор методлари икки ва ундан кўп параметрларни қабул қилиши мумкин. Хар хил дастурлаш тиллари параметрли хоссаларни хар хил ўзига хос холда тақдим этади ва уларни номланиши хам хар хил бўлади.

Масалан C# да улар индексаторлар, Visual Basic да эса улар default хоссалар деб аталади.

Индексаторлар (Indexers) - бу параметрга эга бўлган хоссалар. Улар ёрдамида объектнинг хоссаси билан худди массивга ўхшаб ишлаш мумкин. Агарда классга индексатор эълон қилинса, бу компиляторга у билан массив билан ишлаш кераклигидек хабар берилади.
Индексаторлар худди хоссаларни эълон қилингандек эълон қилинади (get ва set ёрдамида). Асосий фарқи индексатор номи сифатида this калит сўзи ишлатилади.

public double this[int i] коди, биз Vector классига мансуб бўлган хар бир объект (ёки структура) ни биз худди double қийматини қайтарувчи int индексга эга бўлган бир ўлчамли массив бўлишини ифодалайди.

Индексаторга мисол:

01.public double this[int i]
02.{
03.get
04.{
05.switch (i)
06.{
07.case 0: return x;
08.case 1: return y;
09.case 2: return z;
10.// хатолик эълон қиламиз
11.default: throw new IndexOutOfRangeException(i + " рақамли элемент мавжуд эмас");
12.}
13.}
14.set
15.{
16.switch (i)
17.{
18.case 0: x = value; break;
19.case 1: y = value; break;
20.case 2: z = value; break;
21.default: throw new IndexOutOfRangeException(i + " рақамли элемент мавжуд эмас");
22.}
23.}
24.}


System.String классидаги хам Chars индексатор яъни параметрли хосса хисобланади. Chars хоссаси read-only турида бўлиб, уни ёрдамида қатордан кўрсатилган индекс рақамига эга бўлган символни олиш мумкин.


Фарход Дадажонов

Manba: http://virtualdars.uz

Share