0

所以我试图创建一个循环,每次循环时我都会创建一个对象的新实例:像这样。

Client client = new Client(session);
client.Connect(server);

while (true) {
    client.SendPacket(new Craft.Net.CreativeInventoryActionPacket(-1, new Craft.Net.ItemStack((short)19, (sbyte)1)));

    client.Disconnect ("Generic");

    System.Threading.Thread.Sleep(3000);

    //obviously I cannot do this, because there is already an object named client.
    Client client = new Client(session);

    client.Connect(server);
}

我该怎么做呢?我需要创建一个新的 MinecraftClient 实例,在执行 client.Disconnect 后我无法重用旧实例。

4

3 回答 3

4

最简单的工作就是改变

Client client = new Client(session);

client = new Client(session);

也就是说,我认为有一种更清洁的方法。从...开始:

while(true) {
    Client client = new Client(session);
    client.Connect(server);
    client.SendPacket (new Craft.Net.CreativeInventoryActionPacket(-1, new Craft.Net.ItemStack((short)19, (sbyte)1)));
    client.Disconnect ("Generic");
    System.Threading.Thread.Sleep(3000);
}

现在将其分解为一个方法:

private void ConnectAndDoStuff() {
    Client client = new Client(session);
    client.Connect(server);
    client.SendPacket (new Craft.Net.CreativeInventoryActionPacket(-1, new Craft.Net.ItemStack((short)19, (sbyte)1)));
    client.Disconnect ("Generic");
    System.Threading.Thread.Sleep(3000); 
}

接着:

while(true) { this.ConnectAndDoStuff() }
于 2013-05-29T01:32:07.590 回答
1

每次重新开始时在循环中创建实例。

while (true) {
    Client client = new Client(session);
    client.Connect(server);
    client.SendPacket (new Craft.Net.CreativeInventoryActionPacket(-1, new Craft.Net.ItemStack((short)19, (sbyte)1)));
    client.Disconnect ("Generic");

    System.Threading.Thread.Sleep(3000);
}
于 2013-05-29T01:33:18.653 回答
0

如果您只想重新创建client对象,只需删除类型定义

    Client client = new Client(session);
    client.Connect(server);
    while (true)
    {
        client.SendPacket (new Craft.Net.CreativeInventoryActionPacket(-1, new Craft.Net.ItemStack((short)19, (sbyte)1)));
        client.Disconnect ("Generic");
        System.Threading.Thread.Sleep(3000);
        client = new Client(session); 
        client.Connect(server);
    }
于 2013-05-29T01:31:55.303 回答