Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion der Codebeispiele von Hashtable und Dictionary in C#

Eine kurze Diskussion der Codebeispiele von Hashtable und Dictionary in C#

黄舟
黄舟Original
2017-03-09 15:21:121343Durchsuche

Eine kurze Diskussion von Codebeispielen von Hashtable und Dictionary in C#:

Dictionary () Hashtable()

Zuerst der gespeicherte Datentyp

Hashtable ist nicht generisch und nicht typsicher; Dictionary ist generisch und typsicher; Die Schlüsselwerte von Hashtable sind alle vom Objekttyp, aber der Datentyp der Schlüsselwerte des Wörterbuchs kann angegeben werden.

Mit anderen Worten: Wenn in der Hashtable ein anderer Datentyp als Object gespeichert ist, müssen die Daten beim Herausnehmen in der Typkonvertierung angezeigt werden, bevor sie normal verwendet werden können. Das Wörterbuch hat dieses Problem nicht.

In dieser Hinsicht entspricht Hashtable Dictionary

Zweitens die Konsistenz der Reihenfolge beim Lesen von Daten und der Reihenfolge beim Hinzufügen von Daten
            Hashtable ht = new Hashtable();
            Dictionary<string, int> dic = new Dictionary<string, int>();
            ht.Add("A", 1);
            dic.Add("A", 1);
            //Console.WriteLine(ht["A"]+1);     //编译错误!Object类型不能和int类型直接进行相加。
              Console.WriteLine((int)ht["A"] + 1);//编译通过,输出结果为:2
            Console.WriteLine(dic["A"] + 1);    //编译通过,输出结果为:2

Die Konsistenz der Reihenfolge beim Lesen der Daten in Dictionary und Hashtable und die Reihenfolge der Daten beim Hinzufügen von Daten kann nicht garantiert werden, oder es kann gesagt werden, dass keine Konsistenz vorliegt.

Das Wörterbuch kann die Reihenfolge beim Lesen der Daten beim Hinzufügen beibehalten, jedoch nicht beim Löschen Nach Lösch- und Hinzufügungsvorgängen ist jedoch nicht mehr gewährleistet, dass die Reihenfolge beim Lesen der Daten mit der Reihenfolge beim Hinzufügen übereinstimmt.

Dictionary<int, int> dic = new Dictionary<int, int>();
            dic.Add(0, 0);
            dic.Add(1, 1);
            dic.Add(2, 2);

            Console.WriteLine("仅仅经过添加元素处理之后:");

            foreach (KeyValuePair<int, int> kvp in dic)
            {
                Console.WriteLine("Key:" + kvp.Key + " Value:" + kvp.Value);
            }

            dic.Remove(0);
            dic.Add(3, 3);

            Console.WriteLine("经过删除和添加元素处理之后:");

            foreach (KeyValuePair<int, int> kvp in dic)
            {
                Console.WriteLine("Key:" + kvp.Key + " Value:" + kvp.Value);
            }

            Console.ReadKey();
Wenn im Wörterbuch ein Element gelöscht wird, füllt das neu hinzugefügte Element die Position des gelöschten Elements aus, wodurch die Reihenfolge des Hinzufügens von Daten nicht mit der Reihenfolge des Lesens von Daten übereinstimmt.

Eine kurze Diskussion der Codebeispiele von Hashtable und Dictionary in C# Für Hashtable wird die Datenspeicherreihenfolge nach einem bestimmten Algorithmus berechnet, sodass in den meisten Fällen die Datenlesereihenfolge und die Datenhinzufügungsreihenfolge inkonsistent sind.

Wenn Sie also die Reihenfolge beim Hinzufügen von Daten beibehalten müssen, sollten Sie Dictionary und Hashtable am besten nicht verwenden.

Drittens, wenn ein nicht vorhandener Schlüsselwert verwendet wird, um einen Wert in einer Hashtabelle oder einem Wörterbuch zu erhalten

Wenn für Hashtable ein nicht vorhandener Schlüsselwert verwendet wird, um den Wert zu erhalten, wird eine Null zurückgegeben

            Hashtable ht = new Hashtable();
            Console.WriteLine(ht["b"]==null);
            Console.ReadKey();
Wenn für das Wörterbuch ein nicht vorhandener Schlüsselwert zum Abrufen des Werts verwendet wird, wird eine Ausnahme vom Typ „System.Collections.Generic.KeyNotFoundException“ ausgelöst.

Eine kurze Diskussion der Codebeispiele von Hashtable und Dictionary in C# Daher können Sie beim Abrufen eines Werts aus einem Wörterbuch oder einer Hashtabelle zunächst feststellen, ob der Schlüsselwert vorhanden ist (verwenden Sie zur Bestimmung die Methode „ContainsKey ()“), um unerwartete Werte oder Ausnahmen zu verhindern.

Viertens Thread-Sicherheit

Das Wörterbuch ist nicht threadsicher, Hashtable ist threadsicher.

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion der Codebeispiele von Hashtable und Dictionary in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn