辞書のTKeyとTValueという名前は私を混乱させます。何らかの理由でその大会に名前が付けられているのですか?TKeyとTValueは汎用辞書に含まれていますか?
つまり、ジェネリックを作成する場合は、何らかの名前付け規則も使用する必要がありますか?
辞書のTKeyとTValueという名前は私を混乱させます。何らかの理由でその大会に名前が付けられているのですか?TKeyとTValueは汎用辞書に含まれていますか?
つまり、ジェネリックを作成する場合は、何らかの名前付け規則も使用する必要がありますか?
大会では、汎用的なクラスを作成するとき、あなたはジェネリック型には任意の名前を付けることができ資本T
とジェネリックタイプの名前の前に付けることです。大会では、 "T"という接頭辞を付けます。
一般的なタイプが1つしかない場合、それは「T」と呼ばれますが、複数ある場合、TKeyとTValueなどの明示的な名前が付いていますタイプ。
TKey
はキーの種類です。 TValue
は値の型です。
例えば
Dictionary<string, int>
は、文字列をキーとし、(などC++での「テンプレート」と同等)ジェネリック型のためT
を使用する大会あるint型
を返しています。
単一のタイプ(List<T>
)がある場合は、T
だけです(これ以上の説明はありません)。複数のジェネリック型がある場合は、T
という接頭辞が付いています。したがって、TKey
は「キー」の総称タイプであり、値のTValue
です。この場合、辞書がキーを値にマップすることがわかっている場合は役立ちます。
インテリセンスは通常、それぞれのタイプ - 引数の意味を教えます。 Func<T1,T2,TResult>
と例えば:
T1
:このデリゲートによってカプセル化されるメソッドの最初のパラメータのタイプ。T2
:このデリゲートがカプセル化するメソッドの2番目のパラメーターの型です。TResult
:このデリゲートがカプセル化するメソッドの戻り値の型。 (タイプのコメントデータから取られた)は
彼らはジェネリックの種類があります。大文字のTは型を意味します。
List<int> list;
この例でT
はint
あります。
辞書は、キー/値ストアです。 Dictionary<TKey,TValue>
では、TKeyはKeyのタイプであり、TValueはValueのタイプです。
1つ以上の型パラメータがある場合は、可能であれば同様の命名規則を使用することをお勧めします。それ以外の場合はMyGeneric<Q,R,S,T,U,...>
Tを使用して、ジェネリッククラスのベースとなるクラスを指定することができます(例:List<T>
)。ただし、辞書は2つのクラスに基づいているため、キーと値の接尾辞で区別することを選択しました。
もっとクラスが必要な場合は、TとUが使用されている他のシナリオの他の部分(たとえばV、Xなど)を選択できました。
多くのパラメータを持つジェネリッククラスまたはメソッドは、正しく名前が付けられていても、それ自体が大きな「WTF」になります。 – Thorarin