我多次看到这样的代码:
public class BaseList<T> : List<T> where T : BaseBE
我的问题是这段代码的含义是什么,为什么我们要这样写这一行?我知道它正在使用List<T>
,但它的含义是where T : BaseBE
什么?
我多次看到这样的代码:
public class BaseList<T> : List<T> where T : BaseBE
我的问题是这段代码的含义是什么,为什么我们要这样写这一行?我知道它正在使用List<T>
,但它的含义是where T : BaseBE
什么?
该声明是对可以是where T:BaseBE
什么的限制。T
在这种特定情况下,它告诉您T
可以是类型BaseBE
或从任何继承自它的类,但仅此而已。
有关更多详细信息,您可以查看MSDN,您会找到更多详细信息和示例。
这意味着泛型类型 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
例如,其中 T : new() 意味着 T 必须有一个公共的无参数构造函数。