gpt4 book ai didi

c# - 从混合类型集合中获取对象

转载 作者:太空狗 更新时间:2023-10-30 01:24:51 24 4
gpt4 key购买 nike

大家好,我是 OOP 的新手,我需要帮助解决一个小问题。我使用了一个名为 Monsters 的集合来存储 3 种类型的对象。蜘蛛、农民、咕噜(无关紧要)。我的集合作为索引器,但是当我使用它从集合中获取一个对象时,该对象是无类型的,但我确实需要对我的下一个操作进行 TypeCast。

    private void Form1_Load(object sender, EventArgs e)
{
CurrentOpponent Opponent = new CurrentOpponent();
Gollum myGollum = new Gollum();
AngryFarmer myFarmer = new AngryFarmer();
Ugly_Spider mySpider = new Ugly_Spider();
myMonsters.AddGollum(myGollum);
myMonsters.AddFarmer(myFarmer);
myMonsters.AddUgly(mySpider);
progressBar1.Increment(100);
progressBar2.Increment(100);
Monster myCurrentOpponent = Opponent.randomEncounter();
//textBox1.Text = (this is where i need the type for a cast)myCurrentOpponent.name
}

这是我提取对象的randomEncounter

    class CurrentOpponent
{
public Monster randomEncounter()
{
Random _random = new Random();
int opp = _random.Next(4);
return myMonsters[opp];

}

最后索引器返回一个怪物(所有 3 种怪物类型的父级)

    public Monster this[int xxx]
{
get
{
return (Monster)List[xxx];
}
}

帮助将不胜感激..!!提前致谢

最佳答案

理想情况下,AngryFarmer , Ugly_SpiderGollum应该都继承自 Monster :

public class AngryFarmer : Monster
{
// ...
}
// etc.

然后您可以只使用 List<Monster> :

myMonsters = new List<Monster>();
myMonsters.Add(new AngryFarmer()); // works because AngryFarmer is a kind of Monster

这将允许您使用多态性。

关于c# - 从混合类型集合中获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8251625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com