Сөздүк vs Hashtable
Сөздүк терилген (демек, баалуу типтерге бокстун кереги жок), Хэш таблицасы эмес (демек, баалуу типтерге бокс керек). Hashtable IMHO сөздүгүнө караганда маанини алуунун жакшы жолу бар, анткени ал ар дайым баалуулук объект экенин билет. Эгер сиз. NET 3.5 колдонуп жатсаңыз да, окшош жүрүм-турумду алуу үчүн сөздүк үчүн кеңейтүү ыкмасын жазуу оңой.
Hashtable классы – бул өз ачкычтарын сактоого жардам берүү үчүн бүтүн санды (хэш деп аталган) колдонгон сөздүк классынын белгилүү бир түрү. Hashtable классы коллекциядагы белгилүү бир ачкычты издөөнү тездетүү үчүн хэшти колдонот. Ар бир объект. NET Объект классынан келип чыгат. Бул класс GetHash методун колдойт, ал объектти уникалдуу түрдө аныктаган бүтүн санды кайтарат. Hashtable классы жалпысынан абдан натыйжалуу коллекция болуп саналат. Hashtable классындагы бирден-бир маселе, ал бир аз ашыкча чыгымды талап кылат, ал эми чакан коллекциялар үчүн (он элементтен аз) кошумча чыгымдар аткарууга тоскоол болушу мүмкүн.
HashTable менен Сөздүктүн ортосунда дагы бир маанилүү айырма бар. Эгер сиз HashTableдын маанисин алуу үчүн индекстөөчүлөрдү колдонсоңуз, HashTable жок нерсе үчүн нөлдү ийгиликтүү кайтарат, ал эми Сөздүктө жок индексерди колдонуп объектке кирүүгө аракет кылсаңыз, Сөздүк ката кетирет.
HashTable – начар терилген базалык класс; DictionaryBase абстракт классы жөн гана терилген жана ичине HashTable колдонот.
Сөздүктө байкалган кызык нерсе, биз Сөздүккө бир нече жазууларды кошкондо, жазуулардын кошулуу тартиби сакталат. Ошентип, эгер сиз Сөздүккө fоreach колдонсоңуз, сиз жазмаларды киргизген тартипте аласыз. Ал эми, бул нормалдуу HashTable менен туура эмес, Hashtableге ошол эле жазууларды кошкондо, тартип сакталбайт. Эгерде 'Сөздүк Hashtable'ге негизделген' чын болсо, эмне үчүн Сөздүк тартипти сактайт, бирок HashTable андай эмес?
Эмне үчүн алар башкача жүрүш-турушуна келсек, бул Generic Dictionary хэш таблицаны ишке ашырат, бирок System. Cоllectiоns. Hashtableге негизделбейт. Жалпы сөздүктү ишке ашыруу тизмеден ачкыч-нарк жуптарын бөлүштүрүүгө негизделген. Андан кийин алар туш келди жетүү үчүн хэш таблицасы менен индекстелет, бирок ал санагычты кайтарганда, тизмени ырааттуу иретте басып өтөт – бул жазуулар кайра колдонулбагандыктан, киргизүү тартиби болот.