C# 无法从一个类隐式转换为另一个类
我有一个函数,根据谁是发起人来分配变量 函数是这样的,如果角色转向攻击C# 无法从一个类隐式转换为另一个类,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个函数,根据谁是发起人来分配变量 函数是这样的,如果角色转向攻击attack(true) 转到此函数 function Attack(bool CharacterAttacking){ var Attacker = Monster; var Target = Character; if (CharacterAttacking) { Attacker = Character;
attack(true)
转到此函数
function Attack(bool CharacterAttacking){
var Attacker = Monster;
var Target = Character;
if (CharacterAttacking)
{
Attacker = Character;
Target = Monster;
}
怪物是默认选中的
但是如果我想切换它,使角色成为我的if
中的攻击者,那么我会得到错误
无法将类型Game.Models.Monster隐式转换为Game.Models.Character
我如何切换它,使攻击者成为角色,目标成为怪物
谢谢在这种情况下,您需要实现一个接口或基类。这允许在同一对象类型中容纳多个类类型,只要它们实现该接口或派生自基类
public interface IFighter
{
void Attack();
void Defend();
}
然后你必须在你的角色和怪物类中实现这个接口
public class Monster : IFighter
{
public void Attack()
{
//some attack logic
}
public void Defend()
{
//some defense logic
}
}
public class Character : IFighter
{
public void Attack()
{
//some attack logic
}
public void Defend()
{
//some defense logic
}
}
完成此设置后,可以将这些属性添加到保存作战信息的类中。然后您就可以实现您正在尝试的方法
public class Battle
{
public IFighter Attacker = Monster;
public IFighter Target = Character;
public void Attack(bool characterAttacking)
{
if (characterAttacking)
{
Attacker = Character;
Target = Monster;
}
}
}
在这种情况下,您需要实现一个接口或基类。这允许在同一对象类型中容纳多个类类型,只要它们实现该接口或派生自基类
public interface IFighter
{
void Attack();
void Defend();
}
然后你必须在你的角色和怪物类中实现这个接口
public class Monster : IFighter
{
public void Attack()
{
//some attack logic
}
public void Defend()
{
//some defense logic
}
}
public class Character : IFighter
{
public void Attack()
{
//some attack logic
}
public void Defend()
{
//some defense logic
}
}
完成此设置后,可以将这些属性添加到保存作战信息的类中。然后您就可以实现您正在尝试的方法
public class Battle
{
public IFighter Attacker = Monster;
public IFighter Target = Character;
public void Attack(bool characterAttacking)
{
if (characterAttacking)
{
Attacker = Character;
Target = Monster;
}
}
}
使用
接口
并确保Games.Models.Monster类和Games.Models.Character类都实现该接口。任何通用功能都将在接口上声明。使用接口
并确保Games.Models.Monster类和Games.Models.Character类都实现了该接口。任何通用功能都将在接口上声明。然后它们可以互换使用。“需要实现接口”对我来说有点过于强烈了。。。基类就可以了。“需要实现接口”对我来说有点太强了。。。基类就可以了。