1: using System;
2: using System.Collections.Generic;
3: using System.Text;
4: using System.Text.RegularExpressions;
5:
6: namespace TeorieIndexery
7: {
8: class ObjektSIndexerem
9: {
10: private int[] desetcisel;
11: private string testovaciRetezec;
12:
13: public ObjektSIndexerem()
14: {
15: desetcisel = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
16: testovaciRetezec = "testovaci retezec s cislem 7890";
17: }
18:
19: // indexer vypada podobne jako vlastnost (ma setter a getter)
20: // ale misto nazvu pouzivame klicove slovo 'this'
21: // kteremu predchazi typ navratove hodnoty
22: // a nasleduje typ indexu
23: public int this[int index]
24: {
25: get { return desetcisel[index]; }
26: set { desetcisel[index] = value; }
27: }
28:
29: // ukazka jineho indexeru
30: // pouze pro cteni, hleda v nasem retezci pomoci
31: // regularniho vyrazu a vrati nalezeny retezec
32: // tohle neni typicke pouziti indexeru!!
33: // davam to sem pro ukazku ze jde indexer pouzit i jinak
34: public string this[Regex regex]
35: {
36: get { return regex.Match(testovaciRetezec).Value; }
37: }
38: }
39:
40: class Program
41: {
42: static void Main(string[] args)
43: {
44: ObjektSIndexerem obj = new ObjektSIndexerem();
45:
46: Console.WriteLine(obj[5]); // vrati 5
47:
48: obj[5] = 7;
49: Console.WriteLine(obj[5]);
50: // vrati 7, protoze jsme dane cislo zmenili
51:
52: Console.WriteLine(obj[new Regex(@"[0-9]+")]);
53: // vrati '7890'
54:
55: Console.ReadLine();
56: }
57: }
58: }