首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在缺席类级别或接口级别约束泛型类型

在缺席类级别或接口级别约束泛型类型
EN

Stack Overflow用户
提问于 2021-02-18 18:51:30
回答 1查看 24关注 0票数 0

我希望将泛型类型限制为特定类型。在本例中,我希望泛型类型T是属于IComparable的。我希望这种限制发生在父类级别(或父类接口级别)。下面是示例代码:

代码语言:javascript
复制
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:

代码语言:javascript
复制
abstract class BaseContainer<T> {
    protected List<T> container;
}

class QueueCustom<T> : BaseContainer<T> where T : IComparable<T>   {
    public QueueCustom() {
        this.container = new List<T>();
    }
}

如何在父类而不是派生类中执行此操作?

EN

回答 1

Stack Overflow用户

发布于 2021-02-18 19:00:58

你可以两样都做。

通过使用class QueueCustom : BaseContainer,您可以声明一个语句,声明“为派生类选择的类型也将是基类的类型”。

这意味着,为了匹配基类的需求,您还必须要求它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66266321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档