gpt4 book ai didi

c# - C#:如何使用对父类的引用访问子类?

转载 作者:太空宇宙 更新时间:2023-11-03 17:37:50 25 4
gpt4 key购买 nike

因此,我有一个名为Item的抽象类,并且从其继承的是一个名为Food的类,以及也可以视为武器和衣服等物品的其他类。

我正在尝试让NPC在我正在研究其库存(List<Item>)的能力中寻找食物的能力,但除非知道食物,否则他们将无法吃东西而不是剑或帽子。

所以我想类似if (inventory[i].GetType () == Food)的东西会告诉他们是否可以食用,但是既然我确定它是食物,那么我如何获得对Food类实例的引用?谢谢

最佳答案

一次执行这两种操作(检查并获取类型化引用)的一种高性能方式是使用as运算符:

foreach (var item in items)
{
var food = item as Food;
if (food != null)
{
// do whatever special things can be done with food, e.g. add an "Eat" item to some context menu
}
}


不过,实现这一目标的更好方法可能是利用多态性。
与上下文菜单示例保持一致,您的 Item基类必须具有一个虚拟方法,例如 AddMenuItems,并且该方法在您的每个项目上都被调用。

然后, Food类可以重写该方法,以将“ Eat”项添加到其他类型的项所没有的菜单中。

关于c# - C#:如何使用对父类的引用访问子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53006692/

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