每当Zombie的任何实例执行EatBrains时,我想增加“BrainsEaten”。 我怎样才能做到这一点?
namespace ZombieLand
{
public int BrainsEaten; // <- This is syntactically incorrect, but illustrates what I want
public class Zombie
{
public void EatBrains()
{
BrainsEaten++;
}
}
}
答案 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;