C#中的泛型约束,T是相同的,对吧
本文关键字:对吧 泛型 约束 | 更新日期: 2023-09-27 17:56:24
我经常看到:
public interface IFoo<TWidget> where TWidget : ISomethingElse { }
在这种情况下,TWidget与使用通用T相同,对吗?我发现这很难在谷歌上搜索或在规格中找到。我 99% 确定 T + 任何其他字符都与只说 T 相同,但希望绝对确定。
泛
型类型参数的名称可以采用任何有效的标识符名称。
在大多数文档中,您确实会找到T
放置TWidget
的位置。
从 MSDN:
使用描述性名称命名泛型类型参数,除非单个字母名称完全不言自明,并且描述性名称不会增加价值。
在这种情况下,TWidget是通用的,但不是因为它是T+的东西。尽管建议将其命名为 T+something,但它可以是您想要的任何内容,只要它在语法上正确类型标识符名称即可。
正如您所怀疑的那样,将任何标识符放在您通常看到T
的地方是完全合法的。
当对泛型类型施加约束时,您通常会看到更具描述性的名称,通常指示约束可能是什么。当您有多个泛型类型参数时,使用较长的标识符也很有帮助,这样您就可以轻松记住哪个是哪个。
Type 参数可以是任何名称,但标准方法是使用 T,然后遍历字母表,因为需要更多泛型类型。
所以你可能有public interface IFoo<T, U> where T : ISomethingElse { }
但是您也可以同样轻松地使用public interface IFoo<Banana, Spiggot>
.真的没关系