Dictionary - objaśnienie kodu

0

Witam, mam mały problem z rozczytaniem pewnego kodu, mianowicie chodzi o Dictionary w Dictionary(?).

Deklaracja
public Dictionary<int, Dictionary<int, double>> dictionary = new Dictionary<int,Dictionary<int,double>>();


Następnie jakaś metoda i tutaj już mało rozumiem:

<code class="c#">
public void JakasMetoda()
        {
            for (int i = 0; i < lista.Count; i++)
            {
                dictionary[i] = new Dictionary<int,double>(); // na zerowym indeksie istniejącej już kolekcji nowe Dictionary?
                for (int j = 0; j < lista.Count; j++)
                {
                    var x = i+j;
                    dictionary[i][j] = x; // tutaj do czego jest do dodawane? do pierwszego dictionary czy do tego zainicjalizowanego na zerowym?
                }
            }
        }

I jak właściwie finalnie wygląda dictionary stworzone na samym poczatku? Co zostanie uzyskane po odwołaniu się do konkretnych indeksów?

4

W Dictionary nie masz indeksów tylko klucze.
Zapis dictionary[i] = new Dictionary<int, double>(); oznacza utworzenie nowego słownika w zewnętrznym słowniku pod kluczem będącym aktualną wartością zmiennej i.
Ponieważ masz słownik w słowniku, to zapis dictionary[i][j] = x oznacza odwołanie do zewnętrznego słownika pod kluczem i oraz wewnętrznego słownika pod kluczem j i przypisanie tam wartoźci x.

Ogólnie taka struktura danych wygląda tak:

I: [1: a, 2: b, 3: c]
II: [1: a, 2: b, 3: c]
III: [1: a, 2: b, 3: c]

Cyfry rzymskie to klucze zewnętrznego słownika, cyfry arabskie to klucze wewnętrznych słowników, a litery to wartości.

0
somekind napisał(a):

W Dictionary** nie masz indeksów** tylko klucze.
(...)
Cyfry rzymskie to indeksy zewnętrznego słownika

:P

1 użytkowników online, w tym zalogowanych: 0, gości: 1