2010-09-10 109 views
0

我想在每次僵尸执行EatBrains时增加“BrainsEaten”。 我该如何做到这一点?通用访问变量?

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

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

您需要为僵尸吃掉其他身体部位时创建方法。 – Adam 2010-09-10 20:16:52

+0

@Adam也许身体部分可以作为参数传递。 – Carlos 2010-09-10 20:20:50

回答

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类以外的代码只能读取该值。

+0

如果吃了12米大脑,使用静态类会显示效率低下的迹象吗? – sooprise 2010-09-10 20:49:57

+0

@Soo:实际上恰恰相反......如果你省略了static关键字,那么每个Zombie实例都有一个int作为其内存的一部分。然后你有12米的脑计数,这是不同步的,这是巨大的记忆浪费。把一个静态变量(不是一个静态类偶然地)想象成一个全局和共享的变量,但只能在类中。相信与否,在几乎所有的应用程序中,这都足够好。 – 2010-09-10 20:53:28

+0

@Soo:无论您增加多少次,值类的行为将不会有所不同。 – 2010-09-10 21:23:30

0

使用静态成员变量中类:

public static int BrainsEaten; 

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

0

使变量BrainsEaten静这样的:

public static int BrainsEaten; 

当然,你需要定义你的类里面的变量。

0

使其成为一个静态变量。

public static int BrainsEaten;