循环并在每次迭代中创建新的实例对象

本文关键字:创建 实例 对象 迭代 循环 | 更新日期: 2023-09-27 18:15:53

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

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);
}

我该怎么做呢?我需要做一个新的实例的minecraft客户端,我不能重用旧的一个后,我做client.Disconnect.

循环并在每次迭代中创建新的实例对象

最简单的方法就是修改

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() }

每次重新启动时都在循环中创建实例。

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);
}

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

    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);
    }