Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 4967 razy

Wstęp

Słownik, czyli Dictionary pozwala na indeksowanie elementów po dowolnych obiektach. Z tego też względu podczas deklaracji obiektu słownika konieczne jest określenie typu klucza i wartości, gdzie kluczem jest wartość indeksu, pod którym obiekt jest zapisany, natomiast wartością jest obiekt pod tym indeksem zapisany.

Tworzenie obiektu słownika oraz dodawanie do niego elementów

Słownik Dictionary jest dostępny z poziomu przestrzeni nazw:

using System.Collections.Generic;

Utworzenie obiektu słownika odbywa się w następujący sposób:

var dict = new Dictionary<Object, int>();

W powyższym przypadku utworzony został obiekt słownika, który może przyjmować jako klucz dowolny typ wartości a to dlatego, że tym typem jest klasa Object, po której w C# wszystko dziedziczy. Oto przykład, jak do takiego słownika wrzuca się dane:

dict.Add(10, 120); dict.Add("F-16", 2300); dict.Add(new Point2D(100, 300), 100);

Jak widać na powyższym przykładzie, można jako klucz wrzucić dowolny obiekt, a to dlatego, że typ klucza jest klasa Object

Indeksowanie i właściwość Count

Indeksowanie elementów słownika odbywa się po kluczu, czyli odwołać się do do danej wartości w słowniku można np. tak:

Console.WriteLine(dict["F-16"].ToString());

Powyższy kod wyświetli:

2300

Istnieje również właściwość Count, która zwraca liczbę elementów zawartych w słowniki.

Iterowanie po kluczach i wartościach słownika

Iterowanie za pomocą pętli foreach wygląda następująco:

var dict = new Dictionary<Object, int>(); dict.Add(10, 120); dict.Add("F-16", 2300); dict.Add(new Point2D(100, 300), 100); foreach (KeyValuePair<Object, int> kvp in dict) { Console.WriteLine("Key = {0}, Value = {1}", kvp.Key.ToString(), kvp.Value.ToString()); }

Oto wynik działania powyższego kodu:

Klucz = 10, Wartość = 120
Klucz = F-16, Wartość = 2300
Klucz = Point2D x = 100; y = 300, Wartość = 100

Właściwość Keys i iterowanie po kluczach

Właściwość Keys daje nam dostęp do kluczy, po których można iterować w następujący sposób:

var dict = new Dictionary<Object, int>(); dict.Add(10, 120); dict.Add("F-16", 2300); dict.Add(new Point2D(100, 300), 100); foreach (Object i in dict.Keys) { Console.WriteLine("Klucz = {0}", i); }

Wynik działania powyższego kodu:

Klucz = 10
Klucz = F-16
Klucz = Point2D x = 100; y = 300

Właściwość Values i iterowanie po wartościach

Właściwość Values daje nam dostęp do wartości, po których można iterować w następujący sposób:

var dict = new Dictionary<Object, int>(); dict.Add(10, 120); dict.Add("F-16", 2300); dict.Add(new Point2D(100, 300), 100); foreach (Object i in dict.Values) { Console.WriteLine("Wartość = {0}", i); }

Wynik działania powyższego kodu:

Wartość = 120
Wartość = 2300
Wartość = 300

Usuwanie elementów ze słownika

Metoda Remove umożliwia usuniecie pojedynczej elementu o podanym kluczu:

var dict = new Dictionary<Object, int>(); dict.Add(10, 120); dict.Add("F-16", 2300); var p = new Point2D(100, 300); dict.Add(p, 100); dict.Remove(p); foreach (KeyValuePair<Object, int> kvp in dict) { Console.WriteLine("Key = {0}, Value = {1}", kvp.Key.ToString(), kvp.Value.ToString()); }

Wynik działania tego kodu:

Klucz = 10
Klucz = F-16

Można również usunąć wszystkie elementy słownika za pomocą metody Clear.

Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.