【问题标题】:All objects in array are equal to last added object c#数组中的所有对象都等于最后添加的对象c#
【发布时间】:2015-07-15 16:13:57
【问题描述】:

我创建了一个名为“Player”的类,它为每个玩家存储数据。 类做了它应该做的事,但是当在 List/Array 中存储类的多个实例时,数组或列表中的所有对象都等于最后存储的对象。

播放器类代码:

public class Player
{
    private static string player_name;
    public Player(string name)
    {
        player_name = name;
    }
    public string Name
    {
        get
        {
            return player_name;
        }
    }
}

用于创建和添加到列表的代码:

//simple string array for names;
string[] example_names = new string[] { "Mike", "Adam", "Jake" };

//creating new object and adding to list<Player>
List<Player> players = new List<Player>();
foreach (string name in example_names)
{
     Player player = new Player(name);
     players.Add(player);
}

//loop for returning the output
string output = "";
foreach (Player player in players)
{
    output += player.Name + ", ";
}
Clipboard.SetText(output);

输出:“杰克,杰克,杰克,”

【问题讨论】:

  • player_name 不应该是静态的

标签: c# arrays class


【解决方案1】:

private static string player_name;Player 中删除static。使用该关键字,您专门告诉它使Player 的所有实例具有相同的name

没有它,name 将是一个实例字段,并且可以为Player 的每个实例单独设置和检索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-24
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多