Archív Inet.sk Pôvodný autor: Michal Čižmár
01. 02. 2006 o 00:00 8309x

Programujeme v jazyku C# II. Diel 6. – Generics II

V tomto dieli sa budeme zaoberať praktickým použitím Generics a ukážeme si základné triedy, ktoré nám umožňujú prácu so zoznamami, zásobníkmi, frontami, poliami atď...
Programujeme v jazyku C# II. Diel 6.  –  Generics II
Dúfam, že Vás poteší tento nový diel, ktorý vychádza po dlhšej odmlke, za ktorú sa ospravedlňujem. Mal som dosť roboty, ale teraz som už oddýchnutý a plný elánu v pokračovaní série o programovaní v C# v2.0.


V minulom dieli sme si v jednoduchosti vysvetlili podstatu Generics. Ako som už spomínal, veľa tried vhodných na zoznamy (diel 4. séria 2) je v C# implementovaných pomocou Generics a dajú sa veľmi ľahko a dosť efektívne použiť.


Postupne si prejdeme jednotlivé triedy, pozrieme sa na ich klady, zápory a čo je hlavné : oblasti použitia. Tento diel alebo možno aj budúci bude vo forme kuchárky, preto je tu hlavne veľa príkladov a už menej teórie.


>> List class - Zoznam
Začínam s touto triedou, pretože patri medzi najpraktickejšie. Umožňuje nám jednoducho vytvárať jednorozmerné polia, bez toho aby sme si sami museli písať funkcie pre indexový operátor []. Túto triedu rozoberiem podrobnejšie, aby sme si ukázali niektoré zaujímavé funkcie, ktoré majú aj ostatné podobné triedy, o ktorých budem hovoriť.


Príklad 6.1
using System;
using System.Collections.Generic; // Nezabudnut pridat !!
//----------------------------------------------------

class MainClass
{

public static void Main(string[] args)
{

// Vytvorenie zoznamu
List<string> mena = new List<string>();
//Naplnenie zoznamu
mena.Add("Jano");

mena.Add("Lucia");

mena.Add("Imro");

mena.Add("Diana");

//Vypis pomocou indexu
for(int i = 0; i < mena.Count; i++)
Console.WriteLine(mena[i]);

// Vlozenie noveho prvku na lubovolne miesto
// Indexuje sa od nuly,index 2 == 3 pozicia
Console.WriteLine("\nPridame Ivana na 3. miesto");
mena.Insert(2,"Ivan");

for(int i = 0; i < mena.Count; i++)
Console.WriteLine(mena[i]);

Console.WriteLine();

// Ak prvok nenajde vrati -1
int pos = mena.IndexOf("Fero");
Console.WriteLine("Fero je na pozicii s indexom : {0}",pos);
pos = mena.IndexOf("Imro");
Console.WriteLine("Imro je na pozicii s indexom : {0}",pos);
// Odstranenie prvku z lubovolnej pozicie
// Konkretne Imra

Console.WriteLine("\nOdstranime prvok s indexom {0}",pos);
mena.RemoveAt(pos);

for(int i = 0; i < mena.Count; i++)
Console.WriteLine(mena[i]);

//Vymazanie zoznamu
mena.Clear();

//Pozastavnie vypisu
Console.ReadLine();

}

}

//----------------------------------------------------
Príklad na stiahnutie





Príklad je podľa mňa dostatočne okomentovaný a ukazuje základné operácie s triedou List.


>>Časová náročnosť pridania nového prvku
Takáto pohodlná práca so zoznamom je zaplatená väčšou časovou náročnosťou na jeho spravovanie. Aby sme tento čas, čo najviac skrátili, je dobré vedieť
ako vnútorne trieda List funguje.


1. Pri vytvorení prázdneho zoznamu si vnútorne rezervuje klasické pole o konštantnej dĺžke.
2. Ak pridávame nový prvok pomocou .Add a nie sú ešte všetky políčka obsadené, všetko je v pohode a táto operácia trvá 1 časovú jednotku.
3. Ak už ale vo vnútornom poli nie je miesto, tak sa vytvorí nové pole s väčšou dĺžkou a všetky už uložené prvky sa doň ho skopírujú + nový prvok. A nakoniec sa staré pole zruší.
Ak staré vnútorne pole obsahovalo n prvkov tak táto operácia pridania jedného prvku
trvá n časových jednotiek.


Preto je vhodné už pri vytváraní zoznamu nastaviť s akým približným maximálnym počtom prvkov rátate. Viď príklad.


Príklad 6.2

using System;
using System.Collections.Generic;
//----------------------------------------------------

class MainClass
{

public static void Main(string[] args)
{

List<string> samoNastavene = new List<string>();
// Ako ziskat aktualnu maximalnu kapacitu
int kap = samoNastavene.Capacity;
Console.WriteLine("Trieda List po inicializacii ma kapacitu {0}",
kap);

Console.WriteLine("Pridame jeden prvok");
samoNastavene.Add("Ahoj");

kap = samoNastavene.Capacity;
Console.WriteLine("Trieda List zvysila kapacitu na {0}",
kap);

// Vytvorime zoznam s vlastnou
// pociatocnou kapacitou 10 prvkov

Console.WriteLine("Vytvorime prazdny zoznam " +
"na zaciatok pre 10 prvkov");
List<int> rucneNastavene = new List<int>(10); //!!!!!
for(int i = 0; i < 10; i++)
rucneNastavene.Add(i);

kap = rucneNastavene.Capacity;
Console.WriteLine("Pridali sme 10 prvkov a kapacita je {0}",
kap);

Console.WriteLine("Pridame jeden prvok");
rucneNastavene.Add(55);

kap = rucneNastavene.Capacity;
Console.WriteLine("A kapacita sa zvysila na {0}",kap);
Console.ReadLine();
}

}

//----------------------------------------------------
Príklad na stiahnutie





V príklade vidíte, že ak chceme zoznam pripraviť na predpokladaná maximálnu veľkosť 10 prvkov, musíme tak urobiť v konštruktore.
Potom ak prekročíme rozsah tak sa nič zlé nestane, jednoducho pole zväčší svoju dĺžku na dvojnásobok pôvodnej a pridá nový prvok.


POZOR! Nezamieňajte si vlastnosť Capacity Count!!!
Count je počet uložených prvkov.
Capacity – koľko maximálne prvkov môže byť uložených v zozname kým nenastane rozširovanie poľa.


>>Vyhľadávanie v zozname


Príklad 6.3
using System;
using System.Collections.Generic;
//----------------------------------------------------

class MainClass
{

public static void Main(string[] args)
{

List<int> vysky = new List<int>(4);
vysky.Add(150);

vysky.Add(202);

vysky.Add(185);

vysky.Add(192);

int jednaNajdena = vysky.Find(HladajVysku); //!!!
Console.WriteLine("Prva vyska, ktora vyhovuje intervalu (150,200)");
Console.WriteLine("je {0}",jednaNajdena);
// Mozeme najst aj vsetky vyhovujuce vysky
// Vystupom je novy zoznam typu List
Console.WriteLine(" Vsetky vysky, ktore vyhovuju");
List<int> vsetky = vysky.FindAll(HladajVysku);
for(int i = 0; i < vsetky.Count; i++)
Console.WriteLine("{0}",vsetky[i]);


Console.ReadLine();

}

//---------------------------------------------------

// Napiseme vlastnu funkciu ako
// porovnavacie kriteriu a jej meno
// pouzijeme ako parameter pre .Find( );
private static bool HladajVysku(int vyska) //!!!
{

if (vyska > 150 && vyska < 200)
return true;

else
return false;

}

}

//----------------------------------------------------
Príklad na stiahnutie



Ak chceme vyhľadávať nejaký prvok, či množinu prvkov, musíme si napísať funkciu, ktorá vyhodnocuje naše kritérium. Vstupom môže byť iba jedna premenná a výstupom vždy bool premenná (true alebo false).


>>Aplikácia jednej operácie na všetky prvky zoznamu
Tu dám len jednoduchý príklad, pretože je to na spôsob predchádzajúceho problému, kde je potrebne si vytvoriť vlastne funkcie, ktoré sa potom aplikujú hromadne na všetky prvky.


Príklad 6.4
using System;
using System.Collections.Generic;
//---------------------------------------------------

class MainClass
{

public static void Main(string[] args)
{

List<string> pismena = new List<string>(4);
pismena.Add("za");

pismena.Add("as");

pismena.Add("de");

pismena.Add("tt");

//Aplikacia ForEach na vsetky prvky
Console.WriteLine("Vypis vsetkych prvkov vlastnou funkciou");
pismena.ForEach(VypisPrvok); //!!!!
Console.WriteLine();

bool result = pismena.TrueForAll(DvaZnaky); //!!!!
Console.WriteLine("Test ci vsetky prvky maju len dva znaky");
Console.WriteLine("skoncil s vysletkom : {0}",result);
// A nakoniec pole utriedime
// pouzije standartny operator porovnania
// ale mozeme si spravit aj vlastny

pismena.Sort();

Console.WriteLine("\nNa vsetky prvky aplikujeme triediaci                                algoritmus");
pismena.ForEach(VypisPrvok); //!!!!
Console.ReadLine();

}

//---------------------------------------------------

private static void VypisPrvok(string prvok)
{

Console.WriteLine(">> {0} <<",prvok);
}

//---------------------------------------------------

private static bool DvaZnaky(string prvok)
{

if (prvok.Length == 2 )
return true;
else
return false;
}

}

//---------------------------------------------------
Príklad na stiahnutie



>>Čo bude nabudúce?
Budeme pokračovať v podkapitole Generics ďalšími triedami.


Michal Čižmár
micitn@orangemail.sk

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac
Plánovaná údržba v datacentre (20.09.2026) Oznamy
07. 09. 2026

Plánovaná údržba v datacentre (20.09.2026)

Stabilita a nepretržitá dostupnosť vašich webov je pre nás kľúčová. Aby sme tento štandard nielen udržali, ale neustále zvyšovali, naši p...

Čítať viac
Aktualizujte ihneď svoj Wordpress - Kritická zraniteľnosť (CVE-2026-63030) Oznamy
31. 08. 2026

Aktualizujte ihneď svoj Wordpress - Kritická zraniteľnosť (CVE-2026-63030)

Bezpečnostný tím WordPressu vydal núdzovú bezpečnostnú záplatu pre kritickú chybu označenú ako CVE-2026-63030. Táto zraniteľnosť dosiahla...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Výborný pomer
cena / výkon

Ponúkame kvalitné a stabilné služby za rozumnú cenu bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1000 klientov.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

"Mal som možnosť vyskúšať rôzne webhostingy, ale nakoniec som sa rozhodol všetky moje stránky zveriť Inet.sk. Webhosting zvláda jednoduché, ale aj veľmi náročné stránky a magazíny. Podporuje najnovšie technológie a má veľmi prehľadnú a jednoduchú správu domén. Komunikácia s technickou podporou Inet.sk je vynikajúca a za mňa môžem túto firmu iba doporučiť."

Richard Horný
Final Vision, s. r. o.

"Mám u Inet.sk zaparkovanú jednu doménu a mám pocit, že tam zaparkujem aj všetky ostatné domény, ktoré mám, pretože po dlhoročných skúsenostiach s rôznymi inými firmami, mi Vaše služby vyhovujú zatiaľ najviac. Odporúčam kvôli dobrej konektivite a primeranej cene + rýchly support."

Ladislav Kéry
vypnutieimobilizera.sk

"Po rokoch skúšania dodávateľov na poli webhostingových služieb sme našli svojho spoľahlivého a stabilného partnera tu. Stabilita, ochota, znalosť, dobrá cena a rýchle vyriešenie prípadných problémov - to je pre nás Inet.sk."

Jaroslav Mráz
Allycom, s.r.o.

"Máme u Vás doménu a hosting. So službami sme nadmieru spokojní. Z Vašej strany máme pozitívne skúsenosti ako sú: rýchle jednanie, znalosť v problematike, ochota pomôcť, stabilita, zavádzanie noviniek, ak ich klient vyžaduje a dobrá cena. Za nás môžeme Inet.sk len odporučiť. Ďakujeme."

Mgr. Zuzana Valovičová
BL servis, s.r.o.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies