Понимание параметров TKey и TValue в классе Dictionary - PullRequest
3 голосов
/ 19 октября 2011

Я немного искал, но не могу найти информацию о параметрах TKey и TValue класса Dictionary.

  1. Является ли TKey просто значением, которое вы указываете, чтобы сделать TValue уникальным?

  2. Является ли TValue значением вашего собственного решения, которое никак не влияет на поиск в классе Dictionary?

Ответы [ 6 ]

4 голосов
/ 19 октября 2011

Словарь - это отображение ключей на значения.

TKey - это тип ключа. TValue - это тип значения.

Так, например, если бы я отображал string на Person (потому что у меня было собрание людей, и я хотел быстро найти его по имени), я бы использовал

Dictionary<string, Person>

Обратите внимание, что ключ не делает значение уникальным. Может быть два ключа, которые используют одно и то же значение. Однако каждый ключ связан только с одним значением.

1 голос
/ 19 октября 2011

Вы пробовали здесь http://msdn.microsoft.com/en-us/library/xfhwa508.aspx

Прокрутите вниз к комментариям.

1 голос
/ 19 октября 2011

Вы правы в обоих случаях.Ключ - это уникальное значение типа, который вы указываете при создании словаря, а это любое допустимое значение для типа значения, который вы определяете при создании словаря.

0 голосов
/ 19 октября 2011

Словарь также известен как ассоциативный массив или карта.

Это универсальный контейнер, такой же как List(T), и он содержит элементы типа TValue. Таким образом, вы можете использовать универсальный тип TValue для определения типа каждого элемента.

Ключ - это то, что вы используете для индексации каждого элемента. Разница между словарем и списком или массивом заключается в том, что индекс для словаря не ограничен целым числом. Это также не должно быть смежным. Таким образом, тип, который вы указываете для TKey, не обязательно должен быть целым числом. Очень часто используется string.

Это позволяет вам написать что-то вроде:

Dictionary<string, int> Reputation = new Dictionary<string, int>();
Reputation["Jon Skeet"] = 360737;//and counting

Если вам нужно получить это значение, вы можете написать:

int rep = Reputation["Jon Skeet"];//rep now contains the value 360737

Если кто-то проголосует, вы можете написать:

Reputation["Jon Skeet"] += 10;

и т. Д.

0 голосов
/ 19 октября 2011

Словарь хранит пару ключ-значение. Вы можете принять все, чтобы быть значением и ключом. Вы решаете это, когда создаете такой словарь. E.g.:

Dictionary<int, string> myDictionary = new Dictionary<int, string>();

С этим вы получаете словарь, принимающий строку в качестве значения и целое число для его ключа. Это зависит от того, что вам нужно!

0 голосов
/ 19 октября 2011
  1. Да

  2. Да.


Параметры с префиксом 'T' являются просто заполнителями дляВведите.

...