C# Hashtable koos näidetega
⚡ Nutikas kokkuvõte
C# räsitabel on System.Collections nimeruumi kogum, mis salvestab andmeid võtme-väärtuse paaridena, kus iga unikaalne võti on seotud väärtusega ja võti võimaldab selle salvestatud väärtuse kiiret otsingut.

Mis on Hashtable C#-s?
Räsitabel on spetsiaalne kogu, mida kasutatakse võtmeväärtuste üksuste salvestamiseks. Nii et selle asemel, et salvestada ainult üks väärtus, nagu virn, massiiviloend ja järjekord, salvestab räsitabel 2 väärtust. Need 2 väärtust moodustavad räsitabeli elemendi.
Allpool on mõned näited selle kohta, kuidas räsitabeli väärtused võivad välja näha.
{ "001" , ".Net" }
{ "002" , ".C#" }
{ "003" , "ASP.Net" }
Eespool on 3 võtmeväärtuste paari. Iga elemendi klahvid on vastavalt 001, 002 ja 003. Iga võtmeväärtuste paari väärtused on ".Net“, “C#” ja “ASP.Net”.
Vaatame Hashtable kollektsiooni jaoks saadaolevaid toiminguid üksikasjalikumalt.
Hashtable'i deklaratsioon
Räsitabeli deklaratsioon on näidatud allpool. Räsitabel luuakse räsitabeli andmetüübi abil. Märksõna "uus" kasutatakse räsitabeli objekti loomiseks. Seejärel määratakse objekt muutujale ht.
Hashtable ht = new Hashtable()
Elementide lisamine räsitabelisse
Lisamismeetodit kasutatakse elemendi lisamiseks järjekorda. Avalduse üldine süntaks on toodud allpool
HashTable.add("key","value")
Näide 1:
Pidage meeles, et räsitabeli iga element koosneb kahest väärtusest, millest üks on võti ja teine väärtus.
Nüüd vaatame, kuidas see töötab koodi tasemel. Kogu allpool nimetatud kood kirjutatakse meie konsoolirakendusse.
Kood kirjutatakse meie faili Program.cs. Allolevas programmis kirjutame koodi, et näha, kuidas saame ülalnimetatud meetodeid kasutada.
Praegu vaatame oma näites lihtsalt seda, kuidas saame luua räsitabeli, lisada räsitabelile elemente ja neid vastavalt kuvada.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("001",".Net"); ht.Add("002","C#"); ht.Add("003","ASP.Net"); ICollection keys = ht.Keys; foreach (String k in keys) { Console.WriteLine(ht[k]); } Console.ReadKey(); } } }
Code Selgitus:-
- Esiteks deklareerime räsitabeli muutuja, kasutades andmetüüpi Hashtable, kasutades märksõna "Uus". Määratletava muutuja nimi on "ht".
- Seejärel lisame lisamismeetodi abil räsitabelisse elemente. Pidage meeles, et räsitabelisse millegi lisamisel peame lisama nii võtme- kui ka väärtuselemendi.
- Räsitabeli elementide kuvamiseks pole otsest võimalust.
- Räsitabeli kuvamiseks peame esmalt hankima räsitabelist võtmete loendi (001, 002 ja 003).
- Seda tehakse ICollectioni liidese kaudu. See on spetsiaalne andmetüüp, mida saab kasutada räsitabelite kogude võtmete salvestamiseks. Seejärel määrame räsitabelikogu võtmed muutujale 'keys'.
- Järgmisena saame iga võtmeväärtuse jaoks vastava väärtuse räsitabelis, kasutades lauset ht[k].
Kui ülaltoodud kood on õigesti sisestatud ja programm käivitatakse, kuvatakse järgmine väljund.
Väljund:
Vaatame veel mõnda räsitabelite jaoks saadaolevat meetodit.
Sisaldab võtit
Seda meetodit kasutatakse selleks, et näha, kas räsitabelis on võti. Allpool on selle avalduse üldine süntaks. Lause tagastab tõene, kui võti on olemas, vastasel juhul tagastab see väärtuse false.
Hashtable.Containskey(key)
Sisaldab väärtust
Seda meetodit kasutatakse selleks, et näha, kas väärtus on räsitabelis olemas. Allpool on selle avalduse üldine süntaks. Väide tagastab väärtuse tõene, kui väärtus on olemas, vastasel juhul tagastab see väärtuse false.
Hashtable.ContainsValue(value)
Näide 2:
Muudame oma koodi Konsooli rakendus et näidata, kuidas saame kasutada meetodeid "Containskey" ja "ContainsValue".
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("001",".Net"); ht.Add("002","C#"); ht.Add("003","ASP.Net"); Console.WriteLine(ht.ContainsKey("001")); Console.WriteLine(ht.ContainsValue("C#")); Console.ReadKey(); } } }
Code Selgitus:-
- Esiteks kasutame meetodit ContainsKey, et näha, kas võti on räsitabelis olemas. See meetod tagastab tõene, kui võti on räsitabelis olemas. See meetod peaks tagastama tõene, kuna võti on räsitabelis olemas.
- Seejärel kasutame meetodit ContainsValue, et näha, kas väärtus on räsitabelis olemas. See meetod tagastab väärtuse "tõene", kuna väärtus on räsitabelis olemas.
Kui ülaltoodud kood on õigesti sisestatud ja programm käivitatakse, kuvatakse järgmine väljund.
Väljund:
Väljundist on selgelt näha, et nii otsitav võti kui ka väärtus on räsitabelis olemas.
Kuidas C# räsitabelis tsüklit teha
Ülaltoodud näited loevad väärtusi läbi Keys kollektsiooni, aga Hashtable'i saab läbida ka puhtamal viisil. Foreach-tsükkel DictionaryEntry kohal annab sulle võtme ja iga elemendi väärtuse korraga, mis on kõige levinum viis Hashtable'i lugemiseks.
Step 1) Loo räsitabel ja lisa sinna kolm võtme-väärtuse paari.
Step 2) Tsükelda räsitabel DictionaryEntry muutujaga ja seejärel loe iga kirje atribuudid Key ja Value.
using System; using System.Collections; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("101", "Java"); ht.Add("102", "Python"); ht.Add("103", "Kotlin"); foreach (DictionaryEntry entry in ht) { Console.WriteLine(entry.Key + " - " + entry.Value); } Console.ReadKey(); } } }
Code Selgitus:-
- Luuakse räsitabel nimega ht ja lisatakse kolm võtme-väärtuse paari meetodi Add abil.
- Foreach-tsükkel määrab igale elemendile sõnastikukirje (DictionaryEntry), mille omadused Key ja Value paljastavad paari kaks poolt.
Programmi käivitamisel prindib see iga võtme väärtuse kõrvale, näiteks 101 – JavaKuna räsitabel ei pea sisestamise järjekorda, võivad paarid ilmuda teises järjekorras, kui need lisati. Ainult võtmete lugemiseks tehke tsükkel üle võtmete kollektsiooni ja ainult väärtuste lugemiseks tehke tsükkel üle väärtuste kollektsiooni.
C# räsitabeli meetodid ja omadused
Hashtable klass pakub väikest meetodite ja omaduste komplekti, mis hõlmab peaaegu kõiki vajalikke ülesandeid, alates paaride lisamisest ja eemaldamisest kuni liikmelisuse kontrollimise ja elementide loendamiseni. Kõige kasulikumad liikmed on loetletud allpool.
| Liige | KASUTUSALA | Kirjeldus |
|---|---|---|
| Lisa(võti, väärtus) | Meetod | Lisab uue võtme ja väärtuse paari; võti peab olema unikaalne. |
| Eemalda(võti) | Meetod | Kustutab elemendi, mis vastab määratud võtmele. |
| Tühjenda () | Meetod | Eemaldab räsitabelist kõik võtme-väärtuse paarid. |
| SisaldabKey(võti) | Meetod | Tagastab väärtuse tõene, kui antud võti on olemas. |
| SisaldabVäärtust(väärtus) | Meetod | Tagastab väärtuse tõene, kui antud väärtus on olemas. |
| Loendama | vara | Saate salvestatud võtme-väärtuse paaride arvu. |
| Keys | vara | Tagastab kõigi võtmete kogumi. |
| Väärtused | vara | Tagastab kõigi väärtuste kogumi. |
Kuna iga võti on räsitud, leiavad ContainsKey ja indekseerija elemendi peaaegu konstantse aja jooksul, mis teebki Hashtable'i kiirete otsingute jaoks nii kasulikuks.
Erinevus räsitabeli ja sõnaraamatu vahel C#-s
Nii räsitabel kui ka sõnastik salvestavad võtme-väärtuse paare ning kuuluvad mõlemad laiemasse C#-keeleperekonda. kollektsioonidOluline erinevus on tüübiohutus ja see erinevus otsustab, millise poole uues koodis pöörduda.
- Tüübi ohutus: Hashtable salvestab iga võtme ja väärtuse objektina, samas kui Dictionary on üldine, seega kompilaator kontrollib teie kasutatavaid tüüpe.
- Nimeruum: Hashtable asub kaustas System.Collections, samas kui Dictionary asub kaustas System.Collections.Generic.
- Boxing: Hashtable'i kastides on väärtustüübid nagu int, kuid üldine sõnastik salvestab need otse ja väldib seda kulu.
- Performance: Sõnastik on tavaliselt kiirem, kuna väärtuse lugemisel ei ole vaja objektilt tagasi suunata.
- Keerme ohutus: Hashtable pakub Syncühe kirjutaja ja paljude lugejatega inimese poolt salvestatud ümbris, samas kui samaaegse koodi puhul valitakse tavaliselt ConcurrentDictionary.
Iga uue projekti puhul on soovitatav valik üldine sõnastik ja mitte-üldine Hashtable esineb peamiselt vanemas koodis.




