Generics je veľmi rozsiahla téma. Pretože programovanie je hlavne o spracovávaní údajov, tento nástroj je veľmi dobým pomocníkom pre každého programátora. Stačí mať len prehľad, ktorá generická trieda je dobrá na aký typ údajov a potom za pomoci nápovedi zistiť, či má trieda práve tie funkcie, ktoré chcete s dátami robiť, alebo si ich musíte sami doprogramovať. Väčšinou ak zvolíte správnu triedu, zistíte, že naozaj má aj všetky potrebné funkcie.
>>Páry, dvojice a slovníkový typ údajov - class Dictionary<T,T>
Keď som objavil túto triedu, uvedomil si koľko času by som ušetril pri niektorých programoch, keby som ju používal už skorej. Dokáže veľmi dobre pracovať s dátami typu
S tých najjednoduchších príkladov použitia ma napadá klasický prekladový slovník (tam je jasná dvojica – cudzie slovíčko + slovenský ekvivalent). Potom ak ste niekedy robili s XML, tam sa tiež vyskytuje podobný typ údajov (ale pre prácu s XML existuje osobitná kategórie pomocných tried). Ak ste mali niekedy tú česť robiť s nejakým typom expertného systému, tam sa takéto dvojice nazývajú fakty.
Veľmi podobne funguje aj trieda Hashtable (v skutočnosti trieda Dictionary vnútorne pracuje pravé s Hashtable). Dokonca aj rýchlosťou vyhľadávania sa blíži k Hashtable a zároveň sa s ňou pracuje pohodlnejšie.
>>Najjednoduchší príklad na triedu Dictionary
Na tomto príklade si vysvetlíme základnú prácu s Dictionary, jej vytváranie, vkladanie základných dát a hlavne vyhľadávanie podľa kľúča.
Príklad 7.1
Všimnite si, že sú dva spôsoby ako vyhľadávať podľa klúča. Prvý spôsob pomocou indexeru (ako práca s klasickým polom) slovnik[“cat”] vyvolá výnimku v prípade, že sa nenájde zodpovedajúci kľuč. Výnimku musíte ošetriť pomocou konštrukcie try { } catch { } inak program spadne.
Ak použijete metódu bool TryGetValue(kluc T, out hodnota T) je to oveľa bezpečnejšie a prehľadnejšie. Samotná metóda sa postará o zachytenie výnimky, takže program nikdy pre ňu nespadne. Keď metóda vráti výstup true alebo false môžeme sa podľa toho zariadiť ako bude program pokračovať.
POZOR! Hľadaná hodnota sa uloží do premennej, ktorá sa zadáva ako parameter metódy
v zátvorkách + musíme použiť modifikátor out – čím povieme, že jej hodnota sa naplní až vo vnútri funkcie (nájdete to vysvetlené v minulej sérii, ak ste zabudli).
>>Netrápte sa zložitým ukladaním slovníku do súboru!
Slovník ako sme ho naprogramovali hore v príklade hore ja málinko nepoužiteľný :-)). Ak by sa mali slovíčka zadávať iba programovo, ďaleko by sme nezašli. Preto sa tu naskytá požiadavka na načítavanie a ukladanie slovníka do súboru.
Trieda Dictionary je na načítavanie/ukladanie do súboru pripravená. Dokáže to robiť pomocou serializácie. S touto technológiou sme sa zatiaľ nestretli a jej vysvetlenie by vydalo aj na celý článok. Zatiaľ príklad môžete prakticky použiť a na hlbšie vysvetlenie serializácie si musíte pár dielov počkať.