所以,我将此视为错误:
当前上下文中不存在名称
p1
。
它指的是Attack()
类Player
中的代码行。
namespace GameOne
{
public class Program
{
public static void Main()
{
Ai [] badguys = new Ai [5];
Player p1 = new Player();
}
}
public class Ai
{
public Ai()
{
int Health = 10;
int Damage = 1;
}
public static int Attack()
{
p1.Health--;
return p1.Health;
}
}
public class Player
{
public Player()
{
int Health = 50;
}
}
}
答案 0 :(得分:1)
正如@xxbbcc所述,p1是Main()中的局部变量,所以Attack对p1一无所知。
要使代码正常工作,您可以将p1.Health传递给Attack:
public static int Attack(int health)
{
health--;
return health;
}
此外:
int Health = 10;
int Damage = 1;
是AI的本地,所以如果你打算在AI之外使用它们那么你会遇到同样的问题。
答案 1 :(得分:0)
p1超出了Attack方法的范围。您在main中声明了它(作为隐式私有)对象,因此它对Attack方法不可见。攻击()根本不知道p1是什么。