2009-07-08 24 views
15

字典中的TKey和TValue名稱令我感到困惑。他們是出於某種原因以該公約命名的,還是他們可以將其命名爲任何東西?通用字典中的TKey和TValue是什麼?

即,如果我創建一個通用的,我必須使用某種形式的命名約定也?

回答

1

前綴在泛型類型名當你創建一個泛型類,你可以給你想要一個泛型類型的任何名稱。約定是以「T」作爲前綴。我經常看到的模式是,當你只有一個泛型類型時,它被稱爲「T」,但是當你有多個類型時,它們有明確的名稱(如TKey和TValue)來區分不同的不同類型類型。

2

TKey是關鍵的類型; TValue是值的類型。

例如

Dictionary<string, int>被鍵入上的字符串並返回一個int

22

它是慣例使用T爲通用類型(可比與C「模板」 ++等)。

如果有單一類型(List<T>),那麼只需T就可以了(沒有什麼可以解釋的);但如果有多個通用類型,則前綴爲T。因此TKey是「鍵」的通用類型,並且該值爲TValue。如果你知道字典將鍵映射到值,在這種情況下,如果有幫助!

智能感知通常會告訴你每個類型參數的含義;例如與Func<T1,T2,TResult>

  • T1:此委託封裝方法的第一個參數的類型。
  • T2:此委託封裝的方法的第二個參數的類型。
  • TResult:此委託封裝的方法的返回值的類型。

(從類型的評論數據獲取)

0

他們是種通用的。大寫字母T表示類型。

List<int> list; 

在這個例子中Tint

0

字典是一個鍵/值存儲。在Dictionary<TKey,TValue> TKey是Key的類型,而TValue是Value的類型。

建議您使用類似的命名約定如果可能的話在你自己的仿製藥時,有諾雷不是一個類型參數。否則,我們得到MyGeneric<Q,R,S,T,U,...>

+0

具有多個參數的泛型類或方法本身就是一個很大的「WTF」,即使它們被正確命名:) – Thorarin 2009-07-08 13:26:37

0

有一個約定用T來表示你的泛型類所基於的類(例如List<T>)。然而,字典基於兩個類,所以他們選擇用鍵和值後綴來區分它們。

他們本來可以選擇任何東西 - 在其他情況下,我已經看過T和U以及其他後續字母(如V,X等),如果需要更多的類。

相關問題