我多次看到这样的代码:
public class BaseList<T> : List<T> where T : BaseBE
我的问题是这段代码的含义是什么,为什么我们这样写这行?我知道它正在使用List<T>
,但where T : BaseBE
的含义是什么?
答案 0 :(得分:8)
此声明where T:BaseBE
是T
可以约束的约束。在这种特定情况下,它告诉您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必须具有公共无参数构造函数。