变量不存在于当前上下文中

时间:2017-05-23 16:41:35

标签: c#

所以,我将此视为错误:

  

当前上下文中不存在名称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;
        } 
    }
}

2 个答案:

答案 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是什么。