Skirtumas tarp žodyno ir žymaus

Žodynas vs žymeklis

Žodynas įvedamas (kai kurie vertybiniai tipai nereikia žymėti, o žymos nėra (kai kuriuos vertybinius tipus reikia žymėti). „Hashtable“ yra gražesnis būdas gauti vertę nei žodynas IMHО, nes jis visada žino, kad vertė yra objektas. Taigi, jei naudojate .NET 3.5, lengva rašyti išplėstinį metodą žodynui, kad gautumėte panašų elgesį..

„Hashtable“ klasė yra tam tikro tipo žodynų klasė, naudojanti sveikojo skaičiaus reikšmę (vadinamą maiša), kad būtų galima padėti jos klavišuose. „Hashtable“ klasė naudoja maišos funkciją, kad paspartintų konkretaus rakto paiešką pasirinktame klavišu. Kiekvienas .NET objektas yra išvedamas iš objekto klasės. Ši klasė pakeičia „GetHash“ metodą, kuris grąžina sveiką skaičių, kuris vienareikšmiškai identifikuoja objektą. „Hashtable“ klasė yra labai efektyvus pasirinkimas. Vienintelė „Hashtable“ klasės problema yra ta, kad jai reikia šiek tiek viršutinės dalies, o mažiems pasirinkimo elementams (mažiau nei dešimčiai elementų) - viršutinė dalis gali sutrukdyti efektyvumui..

Yra daug daugiau skirtumų tarp „HashTable“ ir žodyno. Jei naudosite rodyklę, kad gautumėte „HashTable“ vertę, „HashTable“ sėkmingai negrąžins neegzistuojančio elemento, o žodynas parodys klaidą, jei bandysite pasiekti elementą naudodami rodyklę, kurios žodyne nėra..

„HashTable“ yra silpnai parašyta pagrindinė klasė; „DictionaryBase“ abstrakčioji klasė yra griežtai įvedama ir joje naudojama „HashTable“.

Keistas dalykas, pastebėtas be žodyno, yra tai, kad kai žodyne pridedame kelis įrašus, išlaikoma eilė, kurioje įrašomi įrašai. Taigi, jei žodyne naudosite ryšį, naujoves gausite tame pačiame apačioje, kurį įterpėte. Tuo tarpu tai nėra tiesa naudojant įprastą „HashTable“, kai pridedate tuos pačius reikalavimus „Hashtable“, o rutulinė priemonė nėra prižiūrima. Jei tiesa, kad „žodyno pagrindas yra„ Hashtable ““, kodėl žodynas palaiko eilę, bet „HashTable“ neturi?

Kodėl jie elgiasi skirtingai, taip yra todėl, kad „Generic Dictionary“ įgyvendina patikimą, tačiau nepagrįstą „System.Cоllectiоns.Hashtable“. Bendrojo žodyno diegimas pagrįstas visų raktų ir reikšmių porų sudarymu iš sąrašo. Tada jie yra indeksuojami su paslėptais kaušai, kad būtų galima gauti bet kokią prieigą, tačiau kai jis grąžina sąrašą, jis tiesiog eina į sąrašą eilės tvarka - kuris bus įterpimo į viršų eilė tol, kol įrašai nebus pakartotinai naudojami..