Különbség a szókincs és a szinkronizáció között

Anonim

Szótár vs Hashtable

A szótár be van írva (só értéktípusok nem kell böxing), a Hashtable nem (s az értéktípusok szükségessé válnak). A Hashtable egy szebb módja annak, hogy értéket kapjon, mint az IMHО szótár, mert mindig az értéket jelenti. Nagyon, ha használsz. NET 3. 5, egyszerűen írhat egy kiterjesztésű metódot a szótárhoz hasonló viselkedéshez.

A Hashtable osztály a szótár osztályának egy speciális típusa, amely egész számot ("hash" -nak nevez) használ fel a kulcsok készítéséhez. A Hashtable osztály használja a hash-t, hogy felgyorsítsa a keresést egy bizonyos kulcsra a côllectión. Minden.NET objektum az Object osztályból származik. Ez az osztály támogatja a GetHash metódot, amely egy olyan egész számot ad vissza, amely egyedileg azonosítja az objektumot. A Hashtable osztály egy nagyon hatékony côllectión általában. A Hashtable osztály egyetlen problémája az, hogy egy kicsit nagy vázlatra van szükség, és a kis côllektívumok (kevesebb, mint tíz elem) az óvadék megakadályozhatja a tökéletességet.

Van egy lényeges különbség a HashTable és a Dictionary között. Ha a indexezőket használni szeretné, hogy értéket kapjon a HashTable-ból, a HashTable sikeresen visszaadja a nulla értéket egy nem létező elemre, míg a szótár hibát okoz, ha megpróbál hozzáférni egy elemhez olyan indexelő használatával, amely nem létezik a Szótárban.

A HashTable az alaptípus, amelyet gyengén írtak; az DictionaryBase absztrakt osztályt tipikusan beírja és belsőleg egy HashTable-ot használ.

A Szótárban furcsa dolog észrevehető, amikor hozzáadjuk a Szótár többszörös bejegyzéseit, a bejegyzések hozzáadására kerül sor. Így ha egy szótárakat használ a Szótárra, akkor ugyanabban a rendszerben kapja meg a rekordokat, amilyeneket beillesztett. Mivel ez nem igaz a nem ismert HashTable-el, ha ugyanazokat a rekordokat hozzáadja a Hashtable-hez, a rendszert nem tartják fenn. Ha a "Dictionary based on Hashtable" igaz, akkor miért tartja fenn a szótár a rendszert, de a HashTable nem?

Ahhoz, hogy miért viselkednek másképp, azért van, mert az általános szótár egy hashtable-et valósít meg, de nem alapul a rendszeren. Cоllectiоns. Hash. Az Általános Szótár implementációja alapja az összes kulcsérték-pár létrehozása a listából. Ezeket ezután indexálják a hashtable vevőkhöz fodrand hozzáféréssel, de amikor visszaad egy enumerat®r, akkor csak a listát sorrendben haladja meg - ez lesz a beszúrási mód, mivel a bejegyzéseket nem használják újra.