IRONSOFTWAREHOME

Zrozumienie słownika w C#

Understanding the C# Dictionary

Tim Corey

10m 19s

Potężna struktura danych w C#, która jest często niedoceniana, to słownik. Klasa Dictionary jest ogólną kolekcją znajdującą się w przestrzeni nazw System.Collections.Generic. W swoim filmie, "The Dictionary Data Structure in C# in 10 Minutes or Less", Tim Corey dostarcza zwięzły i praktyczny przewodnik po tym, jak skutecznie używać słowników w aplikacjach C#. Ten artykuł przedstawia wyjaśnienia i przykłady Tima, mając na celu pomóc Ci łatwo zrozumieć podstawy słownika w C#.

Wprowadzenie do słowników

Tim zaczyna od przedstawienia pojęcia słownika w C#. Porównuje go do prawdziwego słownika, w którym wyszukujesz słowo (klucz), aby znaleźć jego definicję (wartość). W C#, słownik jest kolekcją par klucz-wartość, gdzie każdy klucz jest unikatowy i nie może być null.

Tworzenie słownika

Slownik w C# deklaruje sie, uzywajac skladni Dictionary<TKey, TValue>, co pozwala na efektywne przechowywanie i pobieranie danych przez pary klucz-wartosc. Dzięki domyślnej pojemności początkowej ustawianej podczas jego tworzenia, słowniki mogą dynamicznie dostosowywać się, gdy dodawane są nowe elementy.

O (0:28), Tim zaczyna od podstawowej aplikacji konsolowej, aby pokazać, jak stworzyć słownik. Używa następującego kodu, aby zainicjalizować słownik z liczbami całkowitymi jako kluczami i ciągami jako wartościami:

// Declare a dictionary with integer keys and string values
Dictionary<int, string> rookieOfTheYear = new Dictionary<int, string>();

Tutaj Dictionary<int, string> okresla, ze klucze beda liczbami calkowitymi (int), a wartosci beda lancuchami znakow (string). Zmienna rookieOfTheYear to nazwa instancji slownika. Mozna rowniez uzywac kluczy w postaci lancuchow znakow, ustawiajac typ klucza jako string.

Dodawanie elementów do słownika

Teraz Tim dodaje elementy do słownika o (2:08). Pokazuje, jak uzywac metody Add do dodawania par klucz-wartosc:

// Add entries to the dictionary
rookieOfTheYear.Add(2000, "Mike Miller");
rookieOfTheYear.Add(2001, "Jane Doe");
rookieOfTheYear.Add(2002, "Jane Doe");
rookieOfTheYear.Add(2003, "John Smith");

W tym przykładzie:

  • rookieOfTheYear.Add(2000, "Mike Miller") dodaje okreslony klucz 2000 z wartoscia "Mike Miller".

  • Podobnie, klucze 2001, 2002 i 2003 sa powiazane odpowiednio z "Jane Doe", "Jane Doe" i "John Smith".

Zaznacza, że podczas gdy wartości mogą się powtarzać, klucze muszą być unikatowe. Próba dodania duplikatu klucza prowadzi do wyjątku:

rookieOfTheYear.Add(2001, "Jane Doe"); // This will throw an exception

To wyjatek wystepuje, poniewaz klucz 2001 juz istnieje w slowniku.

Uzyskiwanie dostępu do elementów słownika

Aby zademonstrować pobieranie wartości, Tim używa następującej linii kodu o (3:45):

// Accessing a value with a specific key
Console.WriteLine(rookieOfTheYear[2002]); // Outputs: Jane Doe

Tutaj rookieOfTheYear[2002] dostepuje wartosc powiazana z kluczem 2002. Jest to bardzo wydajny sposób na wyszukiwanie wartości na podstawie kluczy.

Understanding C# Dictionary

Sprawdzanie obecności klucza

O (4:29) Tim omawia, jak sprawdzic, czy klucz istnieje w slowniku, uzywajac metody ContainsKey:

// Check if a key exists before accessing its value
if (rookieOfTheYear.ContainsKey(2002))
{
    Console.WriteLine(rookieOfTheYear[2002]);
}

W przykladzie powyzej ContainsKey(2002) sprawdza, czy klucz 2002 istnieje w slowniku. Jesli tak, odpowiadajaca wartość ("Jane Doe") jest drukowana.

Jeśli klucz nie istnieje, słownik nie zwraca żadnej wartości, co zapobiega błędom związanym z dostępem do nieistniejących kluczy.

Rozszerzanie możliwości słownika

Tim rozszerza możliwości słownika o (5:33), tworząc bardziej złożony przykład ze słownikiem, który mapuje ciągi na listy ciągów:

// Declare a dictionary with string keys and List<string> as values
Dictionary<string, List<string>> wishList = new();

// Add entries to the dictionary with lists as values
wishList.Add("Tim Corey", new List<string> { "Xbox", "Tesla", "Pizza" });
wishList.Add("Billy Bob", new List<string> { "PS5", "Ford", "Hoagie" });
wishList.Add("Mary Jane", new List<string> { "House", "Car", "Sub" });

Tutaj:

  • Klucze są ciągami (np. "Tim Corey", "Billy Bob", "Mary Jane").

  • Wartości są listami ciągów, reprezentującymi listę życzeń dla każdej osoby.

Iterowanie po słowniku

O (7:24) Tim demonstruje, jak iterowac przez slownik za pomocą petli foreach:

// Iterate over each key-value pair in the dictionary
foreach (var (key, value) in wishList)
{
    Console.WriteLine($"{key}'s wish list:");
    // Iterate over each item in the list of values
    foreach (var item in value)
    {
        Console.WriteLine($"\t{item}");
    }
}

W tym przykładzie:

  • foreach (var (key, value) in wishList) iteruje po kazdej parze klucz-wartosc w slowniku wishList.

  • key odnosi sie do klucza (np. "Tim Corey").

  • value odnosi sie do listy wartosci powiazanych z tym kluczem.

  • Wewnętrzna pętla iteruje po każdym elemencie w liście i drukuje go.

Pozwala to na drukowanie wszystkich elementów za pomocą pętli do uzyskiwania dostępu do elementów słownika jeden po drugim przy użyciu określonego klucza i odpowiadającej mu wartości. Oto wynik:

Zrozumienie słownika C#

Uzyskiwanie dostępu do bardziej złożonych wartości

Tim pokazuje również, jak uzyskiwać dostęp do bardziej złożonych wartości w słowniku, wyraźnie używając określonego indeksu o (8:26):

// Access the first item in the list of values for the specified key
Console.WriteLine(wishList["Tim Corey"][0]); // Outputs: Xbox

Tutaj wishList["Tim Corey"] dostepuje liste powiazana z kluczem "Tim Corey", a [0] pobiera pierwszy element z tej listy.

Wnioski

Tim kończy o (9:00), podkreślając znaczenie rozumienia słowników. Wskazuje, że mimo iż słowniki mogą nie być używane często, są niezwykle przydatne w scenariuszach wymagających unikatowych kluczy i wydajnych wyszukiwań.

Najważniejsze wnioski

  • Tworzenie słowników: Zrozum, jak inicjalizować słowniki z różnymi typami danych.

  • Dodawanie elementów: Zrozum znaczenie unikatowych kluczy i jak obsługiwać wyjątki wynikające z duplikatów kluczy.

  • Uzyskiwanie dostępu do wartości: Efektywnie pobieraj wartości, używając kluczy.

  • Sprawdzanie istnienia kluczy: Zapobiegaj błędom, sprawdzając istnienie kluczy przed uzyskaniem dostępu do wartości.

  • Zaawansowane użycie: Implementuj bardziej złożone słowniki, takie jak te z listami jako wartościami.

  • Iteracja: Używaj pętli do uzyskiwania dostępu do wszystkich elementów w słowniku i ich wyświetlania.

Śledząc wideo Tima Coreya, możesz opanować użycie słowników w C#, wzbogacając swój zestaw narzędzi programistycznych o scenariusze wymagające wydajnego pobierania i przechowywania danych. Sprawdź kanał Tima dla bardziej informacyjnych filmów o C#.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta