C#类对象重置?

时间:2013-04-19 16:46:18

标签: c#

我想我可能知道我的问题是什么,但我不知道如何解决它。我试过谷歌,但不看......

假设我有3个班级;菜单,商店和播放器。当您从商店购买商品时,它会被添加到播放器类中的库存中,然后您返回主菜单。然后,您可以选择查看广告资源。

我已经完成了所有这些工作,但是当我选择在主菜单中查看我的库存时,它内部没有任何内容。我知道它有效,因为我在购买物品后已经在店里打印了我的库存。

我认为这是因为我在菜单和商店课程中制作了一个新对象?

Menu.cs

Shop shop = new Shop();
Player player = new Player();

Shop.cs

Menu menu = new Menu();
Player player = new Player();

我认为问题是当我在用户购买物品后将用户送回菜单时,会创建一个新的Player对象,将所有变量设置为默认值?

我不太了解类和对象,就像我从实践中学到的那样。但有没有办法让它一旦你回到菜单就不会自动重置?

2 个答案:

答案 0 :(得分:2)

是的,当您执行new Anything()时,它是一个带有默认选项和值的全新实例。

解决此问题的一种方法是在购买时将Player实例传递给Shop。 (商店不需要在其中声明玩家,只需要使用现有玩家)。 在传递给Player的{​​{1}}中,您将购买的商品添加到广告资源中。

答案 1 :(得分:2)

不是在每个类中存储Player对象,而是在一些重要的类(例如主菜单?主类?)中只创建一个Player对象(即仅使用new Player())。

然后,要从Shop和Menu访问此播放器,请将其作为构造函数参数传递:

private Player player;

public Shop(Player player, OtherStuff here) {
    this.player = player;
}