普遍可访问的变量?

时间:2010-09-10 20:14:49

标签: c#

每当Zombie的任何实例执行EatBrains时,我想增加“BrainsEaten”。 我怎样才能做到这一点?

namespace ZombieLand
{
    public int BrainsEaten; // <- This is syntactically incorrect, but illustrates what I want

    public class Zombie
    {
        public void EatBrains()
        {
            BrainsEaten++;
        }
    }
}

4 个答案:

答案 0 :(得分:8)

您所描述的内容称为全局变量,它们在C#中不存在。

但是,您可以创建的是类上的静态变量(或者更合适的是静态属性)。静态成员不依赖于类的特定实例,而是绑定到类本身,允许您访问它们而无需使用实例。

例如:

namespace Zomebieland
{
    public class Zombie
    {
        public static int BrainsEaten {get; private set;}

        public void EatBrains()
        {
            BrainsEaten++;
        }
    }
}

这做了两件事:它在BrainsEaten类中移动了Zombie的声明,并使其成为static。另外,我将其转换为具有公共get和私有set的属性,因此Zombie类可以分配(或者,在这种情况下,递增)值,但是外部代码Zombie类只能读取值。

答案 1 :(得分:0)

在类中使用静态成员变量:

public static int BrainsEaten;

这成为该类所有对象共有的全局变量。 您不能将其声明为命名空间的一部分。

答案 2 :(得分:0)

将变量BrainsEaten设为静态,如下所示:

public static int BrainsEaten;

当然,您需要在类中定义变量。

答案 3 :(得分:0)

将其设为静态变量。

public static int BrainsEaten;