什么地方T:类型名称是什么意思?

时间:2013-06-26 17:46:06

标签: c#

我多次看到这样的代码:

 public class BaseList<T> : List<T> where T : BaseBE

我的问题是这段代码的含义是什么,为什么我们这样写这行?我知道它正在使用List<T>,但where T : BaseBE的含义是什么?

2 个答案:

答案 0 :(得分:8)

此声明where T:BaseBET可以约束的约束。在这种特定情况下,它告诉您T可以是BaseBE类型,也可以是从它继承的任何类,但没有别的。

有关详细信息,请查看MSDN,您会找到更多详细信息和示例。

答案 1 :(得分:3)

这意味着泛型类型T必须从BaseBE继承,这称为类型约束。这允许类型T在BaseList中用作BaseBE。

例如:

class Foo { }

BaseList<Foo> myList; // Wont compile, Foo is not a BaseBE

class Bar : BaseBE { }

BaseList<Bar> myOtherList; // Ok Bar is a BaseBE

您可以在此处阅读更多类型的约束:

http://msdn.microsoft.com/en-us/library/d5x73970(v=vs.80).aspx

E.g其中T:new()表示T必须具有公共无参数构造函数。