0

サーバーとポートのコレクション(正確にはそれぞれ3つ)をループして接続を試みたいのですが、接続が確立されると、残りのコードに進むことができます。これが私が持っているものです。

        IRC_SETTINGS IRC; //3 servers & 3 ports.
        foreach (string SERVER in IRC.IRC_SERVERS)
        {
            try
            {
                ircSocket = new TcpClient(SERVER, PORT);
                break; //;when we have a working connection.
            }
            catch(Exception){}
        }

サーバー部分では問題なく機能すると思いますが、同時にポートをループするにはどうすればよいですか?foreach(string server、int portin...。

4

1 に答える 1

1

それらを単一のデータ構造(リストなど)に入れて、ループさせることができます。

public class IrcServer
{
    public string Name { get; set; }
    public int Port { get; set; }

    // perhaps some methods
}

IList<IrcServer> servers = new List<IrcServer>();

foreach(IrcServer server in servers)
{
    // server.Name, server.Port
}

アップデート

2つの異なる配列(1つはサーバー名用、もう1つはポート番号用)があるため、辞書に使用してそれらをマージできます。

int[] ports = { 1, 2, 3 };
string[] servers = { "one", "two", "three" };

var serversWithPorts = servers.
    Zip(ports, (s, i) => new { s, i }).
    ToDictionary(i=> i.s, i => i.i);

foreach(var server in serversWithPorts)
{
    Console.WriteLine(server.Key + ":" + server.Value);
}
于 2012-10-28T10:09:34.493 に答える