Tento článok je písaný hlavne pre .NET verzie 1.1 v jazyku C#.
Čo sú delegáti a načo slúžia, časť 1.
Dalo by sa povedať, že sú podobné ako použitie pointerov na funkcie v iných programovacích jazykoch(C++).Znamená to, že delegáti sú tzv. ukazovatele na funkciu, ktorá sa má vykonať za určitých podmienok. Delegáta môžeme chápať ako určitú šablónu ako musí vyzerať hlavička metódy, avšak už neurčuje ako má vyzerať obsah danej metódy.
Zápis:
public delegate bool TestValueDelegate(object Value);
Určuje že nami zadaná metóda(ktorá bude neskor použitá pre delegáta) musí spĺňať tieto podmienky:
Návratová hodnota metódy musí byť typu bool.
Počet vstupných parametrov je 1 a musí byť typu object.
Naša metóda tak môže vyzerať následovne:
public bool OtestujHodnotu(object Value)
{
return (Value != null ? true : false);
}
Metóda OtestujHodnotu testuje vstupný parameter Value, a ak je Value rôzne od null tak vráti true inak false . Samozrejme toto je len ukážková metóda, ktorá nemá až taký vyznam, avšak pre pochopenie to stačí.
Reálne použitie delegáta TestValueDelegate a metódy OtestujHodnotu môže byť nasledovné:
object[] values = new object[] {1, null, "peter", null};
TestValueDelegate mTestValue = new TestValueDelegate(OtestujHodnotu);
foreach (object value in values)
{
bool result = mTestValue(value);
Console.WriteLine("Testujem hodnotu: {0}, vysledok testu: {1}", value, result);
}
Podrobný popis kódu:
Najskôr inicializujeme pole objektov do premennej values, kde druhá a posledná hodnota je null.
Vytvoríme si premennú typu TestValueDelegate s názvom mTestValue do ktorej konštruktora zadáme názov metódy, ktorú má delegát spustiť, v našom prípade je to metóda OtestujHodnotu.
Cyklom foreach prechádzame pole prvkov v premennej values, pre každý prvok v poli pomocou delegáta(zastupeného v premennej mTestValue) spustíme metódu OtestujHodnotu.
Metóda OtestujHodnotu vráti hodnotu true alebo false podľa toho či daný prvok z poľa values je null alebo nie, výsledok je zapísaný do premennej result.
Na koniec vypíšeme na obrazovku výsledok testu našej hodnoty.
V tomto ukážkovom kóde je vysvetlené použitie delegátov a zastupujúcich metód ako takých. Je možné že z daného kódu nemusí byť jasné úplné využitie delegátov.
Preto si v dalšej časti ukážeme využitie delegátov spolu s eventami, kde je využitie delegátov 100%.
Download kódu: http://www.freewebs.com/terrorix/files/blog/Delegates1.zip