ジェネリックで「T」を使用する理由はありますか? 何かの略ですか?私の知る限り、すべてが機能します。例えば
public G Say<G>(){ ... }
あるいは
public Hello Say<Hello>(){ ... }
ジェネリックで「T」を使用する理由はありますか? 何かの略ですか?私の知る限り、すべてが機能します。例えば
public G Say<G>(){ ... }
あるいは
public Hello Say<Hello>(){ ... }
T はタイプです。しかし、それは単なる伝統であり、他の名前を使用することを妨げるものは何もありません. たとえば、一般的な辞書では<TKey, TValue>
.
単一の型パラメーターがある場合は文字Tを使用し、複数ある場合は説明的なパラメーター名の前にTを使用することを推奨するMicrosoft のガイドラインもあります。そうすることで、コード全体でより一貫した感覚が得られます。
あなたが言ったように、タイプのTはすべてうまくいきますが、その場所にTを入れると、それがジェネリックタイプであることを思い出させます。
I は慣習的に .NET のインターフェイスに使用され、他の環境では C がクラスに使用されることがあるように、これは単に簡略化したものです (Delphi はこれを使用します、IIRC)。
通常、「T」はそれ自体で「このコンテキストの単一の型パラメーター」を意味し、複数の型パラメーターがある場合は、T プレフィックスを取得しますDictionary<TKey, TValue>
。コードを読んでいるときに、特定の具象型ではなく型パラメーターであることが明らかになります。
ああ、私は T を Thing と考えていただろう :)
C++ テンプレートはほとんどの場合 T を使用し、ジェネリック プログラミングに使用される場合、ジェネリックは C++ のテンプレートと機能が似ているため、少し伝統もあるかもしれません。
ジェネリック型が何か特別なものを表している場合は、より正確にすることができます..通常、前に T : IRepository<TEntity>, SomeCollection<TItem, TComparer>
..
C++ で初めて登場したので、Template の T だと思いました。
タイプの T
また、E は非常に一般的な Element にも使用されます。そうです、Gも機能します。