C# - 在实例之间共享信息
C# - Sharing information between instances
我的代码很简单。当我单击第一个 class 中的按钮时,它会创建两个 Master 实例和一个 Arena 实例。 Arena 需要从两个 Master 实例接收信息,Arena 需要向每个 Master 实例发送信息,但是两个 Master 实例的信息不一样。
//When I press a button...
master = new Master(ip1.Text);
master.Show();
slave = new Master(ip2.Text);
slave.Show();
arena = new Arena(master,slave);
arena.Show();
竞技场CLASS:
private Master master;
private Master slave;
public Arena(Master master,Master slave)
{
InitializeComponent();
this.master = master;
this.slave = slave;
}
我的问题是:
我可以创建新的 Arena(master,slave) 因为实例 master 和 slave 是之前创建的。但我需要使用类似的东西:
master = new Master(ip1.Text,arena);
master.Show();
slave = new Master(ip2.Text,arena);
slave.Show();
arena = new Arena(master,slave);
arena.Show();
但是我不能这样做,因为在创建主从实例时,arena = null。
已修复!!
编辑:
我有一个名为 Arena 的实例,它接收实例 Master 和 Slave 作为参数。
private Master master;
private Master slave;
public Arena(Master master,Master slave)
{
InitializeComponent();
this.master = master;
this.slave = slave;
}
我的问题是如何 return 主从不同的值。
例如:
public int missao_enviada;
private void btn_enviar_Click(object sender, EventArgs e)
{
missao_enviada = 1;
}
public int enviou_missao()
{
return missao_enviada;
}
但是我只想return missao_enviada Master主实例而不是Master从实例
有办法吗?
这是你想要的吗?
arena = new Arena();
master = new Master(ip1.Text,arena);
master.Show();
slave = new Master(ip2.Text,arena);
slave.Show();
arena.SetMaster(master);
arena.SetSlave(slave);
arena.Show();
根据评论(在 Arena
class 内):
// Empty constructor
public Arena()
{
InitializeComponent();
// Do your stuff...
}
public void SetMaster(Master m) // Or use property; create similar for SetSlave
{
master = m;
}
你应该在 Arena 的构造方法中将 Arena 分配给 Master 和 Slave
private Master master;
private Master slave;
public Arena(Master master,Master slave)
{
InitializeComponent();
this.master = master;
this.slave = slave;
master.Arena = this;
slave.Arena = this;
}
你应该修改你的大师 class 并添加竞技场 属性
public class Master
{
public Arena Arena { set; get;}
}
也许更好的解决方案是创建一个带有静态变量的静态 class,它将在所有主从之间使用。另一种解决方案可能是创建 SQL 轻型数据库。
我的代码很简单。当我单击第一个 class 中的按钮时,它会创建两个 Master 实例和一个 Arena 实例。 Arena 需要从两个 Master 实例接收信息,Arena 需要向每个 Master 实例发送信息,但是两个 Master 实例的信息不一样。
//When I press a button...
master = new Master(ip1.Text);
master.Show();
slave = new Master(ip2.Text);
slave.Show();
arena = new Arena(master,slave);
arena.Show();
竞技场CLASS:
private Master master;
private Master slave;
public Arena(Master master,Master slave)
{
InitializeComponent();
this.master = master;
this.slave = slave;
}
我的问题是:
我可以创建新的 Arena(master,slave) 因为实例 master 和 slave 是之前创建的。但我需要使用类似的东西:
master = new Master(ip1.Text,arena);
master.Show();
slave = new Master(ip2.Text,arena);
slave.Show();
arena = new Arena(master,slave);
arena.Show();
但是我不能这样做,因为在创建主从实例时,arena = null。 已修复!!
编辑:
我有一个名为 Arena 的实例,它接收实例 Master 和 Slave 作为参数。
private Master master;
private Master slave;
public Arena(Master master,Master slave)
{
InitializeComponent();
this.master = master;
this.slave = slave;
}
我的问题是如何 return 主从不同的值。 例如:
public int missao_enviada;
private void btn_enviar_Click(object sender, EventArgs e)
{
missao_enviada = 1;
}
public int enviou_missao()
{
return missao_enviada;
}
但是我只想return missao_enviada Master主实例而不是Master从实例
有办法吗?
这是你想要的吗?
arena = new Arena();
master = new Master(ip1.Text,arena);
master.Show();
slave = new Master(ip2.Text,arena);
slave.Show();
arena.SetMaster(master);
arena.SetSlave(slave);
arena.Show();
根据评论(在 Arena
class 内):
// Empty constructor
public Arena()
{
InitializeComponent();
// Do your stuff...
}
public void SetMaster(Master m) // Or use property; create similar for SetSlave
{
master = m;
}
你应该在 Arena 的构造方法中将 Arena 分配给 Master 和 Slave
private Master master;
private Master slave;
public Arena(Master master,Master slave)
{
InitializeComponent();
this.master = master;
this.slave = slave;
master.Arena = this;
slave.Arena = this;
}
你应该修改你的大师 class 并添加竞技场 属性
public class Master
{
public Arena Arena { set; get;}
}
也许更好的解决方案是创建一个带有静态变量的静态 class,它将在所有主从之间使用。另一种解决方案可能是创建 SQL 轻型数据库。