我经常看到:
public interface IFoo<TWidget> where TWidget : ISomethingElse { }
在这种情况下,TWidget与使用通用T相同,对吗?我发现这个令人惊讶的难以谷歌或在规格中找到。我99%确定T +任何其他角色与只说T相同,但我想绝对肯定。
答案 0 :(得分:5)
generic type parameter的名称可以是任何有效的标识符名称。
在大多数文档中,您确实会找到T
放置TWidget
。
来自MSDN:
使用描述性名称命名泛型类型参数,除非单个字母名称完全是自解释的,并且描述性名称不会增加值。
答案 1 :(得分:1)
在这种情况下,TWidget是通用的,但不是因为它是T +的东西。虽然建议将它命名为T +,但它可以是你想要的任何东西,只要它在语法上正确的类型标识符名称。
答案 2 :(得分:1)
正如您所怀疑的那样,将任何标识符放在您经常看到T
的位置是完全合法的。
当泛型类型存在约束时,您通常会看到更多描述性名称,通常表示约束可能是什么。当你有多个泛型类型参数时,拥有一个更长的标识符也很有帮助,这样你就可以很容易地记住哪一个是哪个。
答案 3 :(得分:0)
Type参数可以是任何名称,但标准的方法是使用T然后通过字母表,因为需要更多的泛型类型。
所以你可能有public interface IFoo<T, U> where T : ISomethingElse { }
但你可以轻松使用public interface IFoo<Banana, Spiggot>
。这真的没关系