我希望将泛型类型限制为特定类型。在本例中,我希望泛型类型T是属于IComparable的。我希望这种限制发生在父类级别(或父类接口级别)。下面是示例代码:
abstract class BaseContainer<T> where T : IComparable<T> {
protected List<T> container;
}
class QueueCustom<T> : BaseContainer<T> {
public QueueCustom() {
this.container = new List<T>();
}
}这会引发一个错误:
类型'T‘不能用作泛型类型或方法'BaseContainer’中的类型参数'T‘。没有从'T‘到’System.I比较‘的装箱转换或类型参数转换。
但是,我可以在子类级别限制类型T:
abstract class BaseContainer<T> {
protected List<T> container;
}
class QueueCustom<T> : BaseContainer<T> where T : IComparable<T> {
public QueueCustom() {
this.container = new List<T>();
}
}如何在父类而不是派生类中执行此操作?
发布于 2021-02-18 19:00:58
你可以两样都做。
通过使用class QueueCustom : BaseContainer,您可以声明一个语句,声明“为派生类选择的类型也将是基类的类型”。
这意味着,为了匹配基类的需求,您还必须要求它们。
https://stackoverflow.com/questions/66266321
复制相似问题