我的窗口是Main.cs,而我的窗口是Options.cs。在我的Main.cs中,我已经定义了一个名为“Player”的类,我在那里实例化了它。
从我的选项表单中,我希望能够访问我在Main.cs表单中创建的Player对象的方法和属性。 Visual Studio 2010告诉我“名称”Player1“在当前上下文中不存在。
我认为这很奇怪,加重我的困惑的是我可以从Options.cs表单中“看到”我的Player类的静态方法。
提前谢谢!
编辑:
Inside Main.cs:
Player Player1 = new Player("Player 1", "X");
Player Player2 = new Player("Player 2", "O");
...
public class Player
{
public static bool Turn { get; set; }
public static int TotalGames { get; set; }
public string Name { get; set; }
public string Icon { get; set; }
public static void ToggleTurn()
{
Turn = !Turn;
}
public Player(string name, string icon)
{
Name = name;
Icon = icon;
}
}
Inside Options.cs:
private void Options_Load(object sender, EventArgs e)
{
SetCheckboxesToPlayerTurn();
txtPlayer1Name.Text = Player1.Name; //HERE IS WHAT I WANT :(
}
答案 0 :(得分:3)
public static bool Turn { get; set; }
表示此变量在类的所有实例之间是SHARED。所以你的转向逻辑不会起作用,因为他们共享这个变量。
Visual Studio 2010告诉我“这个名字 “Player1”中不存在 目前的背景。
因为你在main.cs中声明了那个变量,Options.cs
也没有访问权限。您需要创建静态变量,然后访问它们。 IE
public static Player Player1;
public static Player Player2;
public static main(){
Player1 = new Player("Player 1", "X");
Player2 = new Player("Player 2", "O");
...
}
答案 1 :(得分:3)
您需要以某种方式从“选项”表单中获取对Player对象的引用。
更改此行:
Player Player1 = new Player("Player 1", "X");
到
public Player Player1 = new Player("Player 1", "X");
并将其移到构造函数之外(如果它就在那里)。 然后在Options中创建一个构造函数,它接受Main的一个实例,如下所示:
private Main main;
public Options(Main main)
{
this.main=main;
}
现在,不要使用Main的默认构造函数创建Options,而是使用(仍在Main中):
Options o = new Options(this);
您现在应该可以使用以下方式从选项中引用您的玩家:
string name = this.main.Player1.Name
答案 2 :(得分:0)
使用存储库模式获取/创建玩家, 用于存储对playres的生活引用的身份地图模式 和服务定位器模式可能在单例实例中,用于全局访问您的身份映射器。
对于游戏全球静态很好我想但是......