我在研究别人代码的片段,我觉得有些东西很奇怪。(仅仅是因为我不熟悉с#语言)
有一个具有以下方法的接口
internal interface IPlayer
{
List<int> MakeMove(List<int> Gameboard, int Player);
}然后在其中一个类中创建一个列表,并将该接口用作泛型。
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是什么?
Gameboard = AI_Players[AI_Type].MakeMove(Gameboard, Currentplayer);发布于 2022-03-01 15:01:18
简而言之,这意味着列表只能包含实现此接口的对象。因此,列表中的各个元素可以是不同的具体类,但每个类都必须实现接口。
发布于 2022-03-01 15:15:24
AI_PlayersAI_Type
AI_Type将是一个指数。也许有人会认为,更好的名字应该是aiPlayerIndex,或者应该将列表重命名为aiPlayerTypes;
这个列表存储了什么?
它存储对对象的引用,其中引用的类型为IPlayer。
,你能解释一下什么是作为通用接口的列表吗?
接口是一种类型,就像int或字符串是类型一样。列表可以包含任何类型、int、string、IPlayer或任何其他类型的值。
请注意,列表中的对象可能具有与引用不同的类型。拥有一个IPlayer列表,同时包含AIPlayer和HumanPlayer的对象是非常好的。
https://stackoverflow.com/questions/71310314
复制相似问题