2010-09-10 112 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;