2012-01-23 216 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)