Ordbok vs Hashtable
Ordboken er skrevet (slik at verdsettetyper ikke trenger bоxing), en Hashtable er ikke (slik at verdsettetyper trenger bоxing). Hashtable har en finere måte å oppnå en verdi enn ordboken IMHО, fordi det alltid betyr verdien er et objekt. Tenk om du bruker .NET 3.5, er det enkelt å skrive en utvidelse med en ordbok for å få lignende oppførsel..
Hashtable-klassen er en bestemt type ordboksklasse som bruker et heltall (kalles en hash) til hjelp i grunnlaget for tastene. Hashtable-klassen bruker hash for å øke søkingen etter en bestemt nøkkel i kulturen. Hvert objekt i .NET stammer fra Оbject-klassen. Denne klassen supplerer GetHash-metoden, som returnerer et heltall som unikt identifiserer objektet. Hashtable-klassen er en veldig effektiv kombinasjon generelt. Det eneste problemet med Hashtable-klassen er at det krever litt overhode, og for små kameraer (færre enn ti elementer) kan overhode hindre perfomansen.
Det er en viktig forskjell mellom en HashTable og Dictionary. Hvis du bruker indeksere for å få en verdi ut av en HashTable, returnerer HashTable null for et ikke-eksisterende element, mens ordboken vil bli en feil hvis du prøver å få tilgang til et element ved hjelp av en indekser som ikke finnes i ordboken.
HashTable er baseklassen som er svakt skrevet; DictionaryBase abstrakt klassen er strengt skrevet og bruker internt en HashTable.
En merkelig ting lagt merke til i ordboken er, når vi legger til flere oppføringer i ordboken, opprettholdes den delen der oppføringene legges til. Dermed hvis du bruker en ordbok i ordboken, vil du få oversikten i samme sted du har satt inn dem. Mens dette ikke er sant med normal HashTable, når du legger til samme resuméer i Hashtable, blir resten ikke opprettholdt. Hvis "Ordbok er basert på Hashtable" er sant, hvorfor Dictionary opprettholder resten, men HashTable de ikke?
Som følge av hvorfor de oppfører seg annerledes, er det fordi Generic Dictionary implementerer en hashtable, men er ikke basert på System.Collectios.Hashtable. Generic Dictionary implementasjonen er basert på all-encoding nøkkelverdi-par fra en liste. Disse er deretter indeksert med hashtable buckets for Random Access, men når den returnerer en enumerator, går den bare i rekkefølge i rekkefølge - som vil være den største delen av innlegget så lenge det ikke blir brukt på nytt..