首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接口作为泛型参数

接口作为泛型参数
EN

Stack Overflow用户
提问于 2022-03-01 14:49:04
回答 2查看 96关注 0票数 0

我在研究别人代码的片段,我觉得有些东西很奇怪。(仅仅是因为我不熟悉с#语言)

有一个具有以下方法的接口

代码语言:javascript
复制
   internal interface IPlayer
    {
        List<int> MakeMove(List<int> Gameboard, int Player);
    }

然后在其中一个类中创建一个列表,并将该接口用作泛型。

代码语言:javascript
复制
    public List<IPlayer> AI_Players = new List<IPlayer> { };
. . .

    public void AIMove(int AI_Type)
    {
        Gameboard = AI_Players[AI_Type].MakeMove(Gameboard, Currentplayer);
    }

请您解释一下什么是以接口作为泛型的列表?我理解,例如,带有int泛型is..but..what的列表存储了什么?

这一行中的AI_Type是什么?

代码语言:javascript
复制
Gameboard = AI_Players[AI_Type].MakeMove(Gameboard, Currentplayer);
EN

回答 2

Stack Overflow用户

发布于 2022-03-01 15:01:18

简而言之,这意味着列表只能包含实现此接口的对象。因此,列表中的各个元素可以是不同的具体类,但每个类都必须实现接口。

票数 2
EN

Stack Overflow用户

发布于 2022-03-01 15:15:24

AI_PlayersAI_Type

AI_Type将是一个指数。也许有人会认为,更好的名字应该是aiPlayerIndex,或者应该将列表重命名为aiPlayerTypes;

这个列表存储了什么?

它存储对对象的引用,其中引用的类型为IPlayer

,你能解释一下什么是作为通用接口的列表吗?

接口是一种类型,就像int或字符串是类型一样。列表可以包含任何类型、int、string、IPlayer或任何其他类型的值。

请注意,列表中的对象可能具有与引用不同的类型。拥有一个IPlayer列表,同时包含AIPlayer和HumanPlayer的对象是非常好的。

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

https://stackoverflow.com/questions/71310314

复制
相关文章

相似问题

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