对于多个实例,当事件处理程序如下声明时,它们是否倾向于重叠并设置变量的所有实例
比如说,
Something class = new Something();
被声明~ 3 次,并且在所有 3 次中,事件处理程序都被声明和使用。
public class something
{
public string str = "1";
public string str2 = "2";
public void onconnect(object sender, ConnectedEventArgs e)
{
if (e.Connected)
{
this.ses = e.NetworkSession;
this.ses.OnHandshakeHandler += new EventHandler<HSEventArgs>(OnHandshakeHandler);
this.ses.onreceive+= new EventHandler<PEventArgs>(onreceive);
return;
}
}
}
现在让我们说
public void onreceive(object sender, PEventArgs e)
{
str = "3";
}
在接收时 str 会全部变为“3”吗?因为就我而言,我开始相信事件处理程序是在类的所有实例之间共享的。因此,使类的所有实例中的所有变量都相同。
如果不是这种情况,事件处理程序可能是为什么我的变量都被引发的同一个事件改变的原因吗?如果是这样,您将如何隔离该类并将处理程序分配给每个单独的类?
onconnect 被调用
public void Connect(string ip, short port)
{
try
{
this.connector = new Connector();
this.connector.OnClientConnected += new EventHandler<ConnectedEventArgs>(onConnect);
this.connector.Connect(ip, port); //Logs into server
}
catch
{
updateLog("[Error]Servers exploded!!!", this);
}
}
当在 gui 上按下按钮时调用 ^