字典中的TKey和TValue名稱令我感到困惑。他們是出於某種原因以該公約命名的,還是他們可以將其命名爲任何東西?通用字典中的TKey和TValue是什麼?
即,如果我創建一個通用的,我必須使用某種形式的命名約定也?
字典中的TKey和TValue名稱令我感到困惑。他們是出於某種原因以該公約命名的,還是他們可以將其命名爲任何東西?通用字典中的TKey和TValue是什麼?
即,如果我創建一個通用的,我必須使用某種形式的命名約定也?
的約定是用一個大寫字母T
前綴在泛型類型名當你創建一個泛型類,你可以給你想要一個泛型類型的任何名稱。約定是以「T」作爲前綴。我經常看到的模式是,當你只有一個泛型類型時,它被稱爲「T」,但是當你有多個類型時,它們有明確的名稱(如TKey和TValue)來區分不同的不同類型類型。
TKey
是關鍵的類型; TValue
是值的類型。
例如
Dictionary<string, int>
被鍵入上的字符串並返回一個int
它是慣例使用T
爲通用類型(可比與C「模板」 ++等)。
如果有單一類型(List<T>
),那麼只需T
就可以了(沒有什麼可以解釋的);但如果有多個通用類型,則前綴爲T
。因此TKey
是「鍵」的通用類型,並且該值爲TValue
。如果你知道字典將鍵映射到值,在這種情況下,如果有幫助!
智能感知通常會告訴你每個類型參數的含義;例如與Func<T1,T2,TResult>
:
T1
:此委託封裝方法的第一個參數的類型。T2
:此委託封裝的方法的第二個參數的類型。TResult
:此委託封裝的方法的返回值的類型。(從類型的評論數據獲取)
他們是種通用的。大寫字母T表示類型。
List<int> list;
在這個例子中T
爲int
。
字典是一個鍵/值存儲。在Dictionary<TKey,TValue>
TKey是Key的類型,而TValue是Value的類型。
建議您使用類似的命名約定如果可能的話在你自己的仿製藥時,有諾雷不是一個類型參數。否則,我們得到MyGeneric<Q,R,S,T,U,...>
有一個約定用T來表示你的泛型類所基於的類(例如List<T>
)。然而,字典基於兩個類,所以他們選擇用鍵和值後綴來區分它們。
他們本來可以選擇任何東西 - 在其他情況下,我已經看過T和U以及其他後續字母(如V,X等),如果需要更多的類。
具有多個參數的泛型類或方法本身就是一個很大的「WTF」,即使它們被正確命名:) – Thorarin 2009-07-08 13:26:37