为什么泛型经常使用T?
在仿制药中使用“T”有什么理由吗? 它是某种缩写吗? 据我所知,一切正常。 例如
public G Say<G>(){ ... }
或者甚至
public Hello Say<Hello>(){ ... }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
T 代表类型类型。 但这实际上只是一种传统,没有什么可以阻止您使用其他名称。 例如,通用字典使用
。还有一个 Microsoft 指南建议使用如果您有一个类型参数,请使用字母 T;如果您有多个类型参数,请在描述性参数名称前添加 T 前缀。 这样做将为您的代码提供更一致的感觉。
T is for Type. But it's really just a tradition and there is nothing to prevent you from using other names. For example, generic dictionaries use
<TKey, TValue>
.There is also a Microsoft guideline that recommends using the letter T if you have a single type parameter, and prefix descriptive parameter names with T if you have more than one. Doing so will provide a more consistent feel across your code.
T 代表类型,
就像你说的一切工作正常。但是把 T 放在那个地方会提醒你这是通用类型。
T for Type,
as like you said everything works fine.But putting T in that place remind you that is of generic type.
它只是一个简写,就像 I 通常用于 .NET 中的接口,而在其他环境中,C 有时用于类(Delphi 使用这个,IIRC)。
一般来说,“T”本身意味着“此上下文中的单个类型参数”,如果您有多个类型参数,它们会获得一个 T 前缀,例如
Dictionary
。 当您阅读代码时,它会很明显地表明它是类型参数而不是特定的具体类型。It's just a shorthand like I is conventionally used for interfaces in .NET, and in other environments C is sometimes used for classes (Delphi uses this, IIRC).
Generally "T" on its own means "the single type parameter in this context" and if you have multiple type parameters, they get a T prefix, e.g.
Dictionary<TKey, TValue>
. It just makes it obvious when you're reading the code that it's a type parameter rather than a specific concrete type.哦,我本来以为 T 代表 Thing :)
oh, I would have thought T for Thing :)
也可能有一些传统,因为 C++ 模板大多数时候使用 T,并且当用于泛型编程时,泛型在功能上与 C++ 模板相似。
There might also be a bit of tradition too as C++ templates use T most of the time, and generics are similar in function to C++'s templates, when used for generic programming.
另外,E 也用于代表元素,这也很常见。 你说得对,G 也可以。
Also, E is used for Element that's very common too. You're right G also works.
如果你的泛型类型代表一些特殊的东西,你可以让它更精确。通常在它前面加上 T 前缀:
IRepository, SomeCollection
..If your generic type represents something special, you can make it more precise.. Usually prefixing it with T :
IRepository<TEntity>, SomeCollection<TItem, TComparer>
..我认为这是 T 代表模板,因为它首先出现在 C++ 中。
I thought that was T for Template because it first appears in C++.