gpt4 book ai didi

c# - 如何创建一个空的对象字段?

转载 作者:行者123 更新时间:2023-11-30 12:11:49 27 4
gpt4 key购买 nike

我需要将类 Rogue 游戏编码为一个项目,但我遇到了一个小问题。有时我需要选择使用开关创建哪个对象。我想在开关外部声明一个“空”对象,然后开关用值填充该对象。这就是我想要做的:

Console.WriteLine("What race would you like to be?")

int answer = Convert.ToInt32(Console.ReadLine());

Object heroRace; // This is where the problem comes in

switch(answer)
{
case 1: heroRace = new Orc(); break;
case 2: heroRace = new Elf(); break;
}

我希望 heroRace 在 switch 范围之外以便重新使用。如果我可以创建类似的东西,那将大大简化我的程序。

最佳答案

在访问它的成员之前,您需要将对象转换为更具体的类型

Object o=new Orc();
((Orc)o).methodNameWithinOrc();

但这会导致转换异常。

例如..

  ((Elf)o).methodNameWithinOrc();

会导致转换异常,因为 oOrc 而不是 Elf 的对象。

最好在使用 is 运算符进行转换之前检查对象是否属于特定类

 if(o is Orc)
((Orc)o).methodNameWithinOrc();

Object 本身没有用,除非您覆盖 ToStringGetHashCode.. 方法

应该是这样的

 LivingThingBaseClass heroRace;

OrcElf 应该是 LivingThingBaseClass 的子类

LivingThingBaseClass 可以包含诸如movespeakkill 之类的方法。这些方法中的全部或部分将被 OrcElf

覆盖

LivingThingBaseClass 可以是一个抽象类甚至是一个接口(interface),这取决于您的要求

关于c# - 如何创建一个空的对象字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14673334/

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