2012-01-23 387 views
0

我是編程C#的新手,我想將一個元素添加到數組中。向C#中的數組添加元素#

這裏是我的功能:在發生錯誤

public bool AddPlayer(string PlayerName,string token) 
{ 
    static int i = 0; // <---- Error 

    if (PlayerIndex < MAX_NUMBER_OF_PLAYERS) 
    {   
     Player[i]= PlayerName 
     i++; 
    } 

    return true; 
} 

靜態INT I = 0的結果。有沒有另一種方法來做到這一點?

回答

0

您需要將i設爲靜態類成員,而不是方法中的局部變量。你可能也想給它一個更有意義的名字。

0

如果你實際上需要一個靜態變量,那麼你需要定義它以外的的方法和類的定義。

static int i = 0; 

public bool AddPlayer(string playerName, string token) 
{ 
    // method implementation here... 
} 
1

,如果你使用的不是數組列表....(其更可能列表將更好地爲您服務)

你可以去Player.Add(PlayerName);

var players = new List<string>(); 

players.Add("bob"); 
players.Add("mary); 

但很可能你會想要一個玩家類,所以你可以添加其他有關「玩家」的有趣信息。

class Player 
{ 
    public string Name { get; set; } 
} 

然後

var players = new List<Player>(); 

players.Add(new Player() { Name = "bob" }); 
players.Add(new Player() { Name = "mary" }); 
1

通常的方式做到這一點是利用一個List,不是一個數組。但是,假設你不能這樣做,你應該使該索引成爲該類的一個(非靜態)成員,並在構造函數中將其初始化爲0。

+0

有誰知道爲什麼C#不允許在成員函數中使用靜態變量嗎?你會認爲最好把變量放在最接近他們使用的地方。 – user1164199

+0

@ user1164199它可能比其他任何事情都引起更多的困惑;我有些同意,你真的需要它的時候(而且你沒有更好的將功能分解到另一個類中)並不常見。如果你確實需要它,這裏有一個可能的實現:http://whathecode.wordpress.com/2011/06/13/beyond-private-accessibility/ –

+0

請不要使用,雖然。 ; p(正如博客文章中所解釋的) –

3

聽起來好像你並不知道你要存儲多少玩家(達到最大值)。在這種情況下,你應該寧可使用List<string>來存儲您的球員的名字,這將調整以適應任意數量的球員:

private List<string> players = new List<string>(); 

public void AddPlayer(string playerName,string token) 
{ 
    players.Add(playerName); 
} 
+0

+1用於解釋,使用列表。 :),以及對於製作爲+1 K:P :) –

+0

如果您以後需要它作爲數組,List有一個「ToArray」函數,它將內容複製到正確大小的數組中。如果可以的話,忘記數組並保留列表可能會更好。 – billpg

0

也可以把「我」作爲類的靜態成員,也可以更改的功能靜態方法

public static bool AddPlayer(string PlayerName,string token)