[英]C# - Sharing information between instances
我的代碼很簡單。 當我在第一堂課中單擊一個按鈕時,它將創建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();
競技場課程:
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;
}
我的問題是如何為主機和從機返回不同的值。 例如:
public int missao_enviada;
private void btn_enviar_Click(object sender, EventArgs e)
{
missao_enviada = 1;
}
public int enviou_missao()
{
return missao_enviada;
}
但是我只想將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
課程內):
// Empty constructor
public Arena()
{
InitializeComponent();
// Do your stuff...
}
public void SetMaster(Master m) // Or use property; create similar for SetSlave
{
master = m;
}
您應該使用Arena的構造方法將Arena分配為主控和從屬
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;
}
您應該修改您的大師班並為其添加Arena屬性
public class Master
{
public Arena Arena { set; get;}
}
也許更好的解決方案是創建一個帶有靜態變量的靜態類,該類將在所有主站和從站中使用。 另一個解決方案可能是創建SQL light數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.