Что такое TKey и TValue в общем словаре?

Имена TKey и TValue в словаре меня путают. Являются ли они названы с этим соглашением по какой-либо причине или они могли назвать что-нибудь?

то есть. если я создам общий, мне также нужно использовать какое-то соглашение об именах?

Ответ 1

Это соглашение для использования T для общих типов (сравнимо с "шаблонами" на С++ и т.д.).

Если существует один тип (List<T>), тогда просто T в порядке (больше нечего объяснять); но если существует несколько типичных типов, T префикс цели. Следовательно, TKey - это общий тип "ключа" и TValue значения. Если это поможет, если вы знаете, что словарь сопоставляет ключи значениям!

Intellisense обычно скажет вам, что означает каждый аргумент типа; например, с помощью Func<T1,T2,TResult>:

  • T1: тип первого параметра метода, который инкапсулирует этот делегат.
  • T2: тип второго параметра метода, который инкапсулирует этот делегат.
  • TResult: тип возвращаемого значения метода, который инкапсулирует этот делегат.

(взято из данных комментариев типа)

Ответ 3

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

например,

Dictionary<string, int> вводится в строку и возвращает int

Ответ 4

При создании универсального класса вы можете указать любое имя, которое вы хотите использовать для общего типа. Соглашение состоит в том, чтобы префикс "T".

Шаблон, который я часто вижу, состоит в том, что когда у вас есть только один общий тип, он называется "Т", но когда у вас более одного, у них есть явные имена (например, TKey и TValue), чтобы различаться между разными типами.

Ответ 5

Это типы общего. Тип капитала T означает тип.

List<int> list;

В этом примере T является int.

Ответ 6

Словарь - это хранилище ключей/значений. В Dictionary<TKey,TValue> TKey - это тип ключа, а TValue - Тип значения.

Рекомендуется использовать аналогичное соглашение об именах, если это возможно, в ваших собственных дженериках, когда существует не более одного параметра типа. В противном случае получим MyGeneric<Q,R,S,T,U,...>

Ответ 7

Существует соглашение использовать T для обозначения класса, на котором основан ваш общий класс (например, List<T>). Однако словарь основан на двух классах, поэтому они решили отличить их от суффикса Key и Value.

Они могли выбрать что угодно - в других сценариях, которые я видел в T и U, и других последующих букв (например, V, X и т.д.), если требуется больше классов.