C#-在另一个具有相同含义的类中创建类实例
我想创建一个名为敌方的类,该类应用于编程rpg主题的作战系统。问题是我想在C#-在另一个具有相同含义的类中创建类实例,c#,instance,C#,Instance,我想创建一个名为敌方的类,该类应用于编程rpg主题的作战系统。问题是我想在敌人类中创建多个怪物类型,但是我必须为每个敌人类创建一种可能性,例如敌人.地精或敌人.傀儡 问题: 我如何通过在作战系统功能中只使用一个参数来实现这一点?我想用 public static void InitiateBattle ( Player player, Enemy enemy ) 但是现在我不能使用敌方.Goblin实例,因为它不能隐式地将敌方.Goblin转换为敌方。我怎样才能用最少的代码最轻松地修复此问题?
敌人
类中创建多个怪物类型,但是我必须为每个敌人类创建一种可能性,例如敌人.地精
或敌人.傀儡
问题:
我如何通过在作战系统功能中只使用一个参数来实现这一点?我想用
public static void InitiateBattle ( Player player, Enemy enemy )
但是现在我不能使用敌方.Goblin
实例,因为它不能隐式地将敌方.Goblin
转换为敌方
。我怎样才能用最少的代码最轻松地修复此问题?您需要使用
然后你就可以将一个地精作为敌人传过去。你需要使用
然后你就可以将一个地精作为敌人传进来。听起来你想使用继承
public class Enemy {}
public class Goblin : Enemy {}
public class Golem : Enemy {}
然后,您可以将Goblin
或Golem
的实例传递给您的方法,该语句将是有效的,因为编译器会将您的对象“装箱”到父类型的实例中
然后,如果您想使用Goblin或Golem子类中的成员,则需要使用as
将敌人
参数变量“强制”回相应的类型:
public static void InitiateBattle (Player player, Enemy enemy)
{
var golem = enemy as Golem;
var goblin = enemy as Goblin;
}
确保在施放后检查null
请记住,C#不允许多重继承;每个类只能从一个父类继承。听起来您想使用继承吗
public class Enemy {}
public class Goblin : Enemy {}
public class Golem : Enemy {}
然后,您可以将Goblin
或Golem
的实例传递给您的方法,该语句将是有效的,因为编译器会将您的对象“装箱”到父类型的实例中
然后,如果您想使用Goblin或Golem子类中的成员,则需要使用as
将敌人
参数变量“强制”回相应的类型:
public static void InitiateBattle (Player player, Enemy enemy)
{
var golem = enemy as Golem;
var goblin = enemy as Goblin;
}
确保在施放后检查null
请记住,C#不允许多重继承;每个类只能从一个父类继承。我认为最好使用接口
public interface IEnemy
{
//e.g.
public void Attack();
}
public class Goblin : IEnemy
{
public void Attack()
{
throw new System.NotImplementedException();
}
}
public class Battle
{
public static void InitiateBattle(Player player, IEnemy enemy);
}
我认为最好使用界面
public interface IEnemy
{
//e.g.
public void Attack();
}
public class Goblin : IEnemy
{
public void Attack()
{
throw new System.NotImplementedException();
}
}
public class Battle
{
public static void InitiateBattle(Player player, IEnemy enemy);
}
阅读关于类继承阅读关于类继承关于Healthpoints之类的属性,我将如何调用/设置它们?@IanH。因为所有敌人都有生命,所以他们会进入敌人的职业。那么像Healthpoints这样的属性呢?我如何调用/设置它们?@IanH。因为所有敌人都有生命,所以他们会进入敌人的职业。