sobota 1. září 2012

C# genericita

Po dlouhé době jsem se rozhodl že sem hodím pár řádků. Dneska to bude o genericitě v jazyce C#
Jak mnozí z vás ví, genericita se používá pro zpřehlednění a hlavně pro zefektivnění kódu. To znamená, že třída může pracovat s mnoha různými typy a stačí to napsat pouze jednou. Konkrétně, řešil jsem problém datové struktury "Bag", tedy batoh. Jedná se o strukturu, kde vkládáte prvky jako do batohu a také je z něj vytahujete jako z batohu, tedy co vám přijde první pod ruku, to vytáhnete. Takže slouží pro uchování dat u kterých nezáleží na pořadí.
Při programování této struktury jsem narazil na malý problém a to jak zjistit, zda je struktura prázdná. Pro jednoduchost jsem prvky ukládal do pole určité velikosti. Jelikož je ale použit generický typ, nazvěme ho Item, není známo zda je to hodnotová či referenční proměnná. To znamená, že nevíme zda má nějakou referenci nebo hodnotu null, nebo nějakou konkrétní hodnotu. A jelikož postupně prvky náhodně vytahujeme, musíme je smazat z pole. Tedy nastavit na defaultní hodnotu. (ale jakou?)
Díky nápovědy Visual Studia se tento problém rychle vyřešil syntaxí:

field[rindex] = default (Item);

Kdy:
field = pole prvků typu Item
rindex = náhodný index z kterého beru prvek

Tímto zajistíte, že se prvek z pole smaže, a nic na indexu nebude.
Pro případné zájemce celý projekt se strukturou Bag: zde

Žádné komentáře:

Okomentovat