超出数组C#error>边界的另一个索引。

时间:2013-11-26 17:15:23

标签: indexoutofboundsexception

所以我在第21行得到一个错误,即if(“client”.CompareTo(args [0])== 0)line>。<不,这不是我的代码,但我想让所有人都努力从中学习。它基本上是C#的游戏客户端和服务器程序,但它也使用.bat?就像我说这不是我的代码所以我不确定为什么需要一个.bat文件,这只是无用的信息,因为我被这个论坛告知添加更多细节lol,我只是想知道如何解决第21行的错误。

        public static void Main(String[] args)
    {
        UDP_helper uh = new UDP_helper();
        try
        {
            //if (!Valid(args))      

            if ("client".CompareTo(args[0]) == 0) //<--- error is on this line
            {
                uh.sendToAddr = args[1];
                uh.sendToPort = int.Parse(args[2]);
            }
            else
                if ("server".CompareTo(args[0]) == 0)
                {
                    uh.IsServer = true;
                    uh.listenOnPort = int.Parse(args[1]);

                }
                else
                    if ("forward".CompareTo(args[0]) == 0)
                    {
                        uh.IsForward = true;
                        uh.listenOnPort = int.Parse(args[1]);
                        uh.forwardToAddr = args[2];
                        uh.forwardToPort = int.Parse(args[3]);
                        uh.listenWait = 600;
                    }
                    else
                    {
                        Console.WriteLine("Usage: .exe sends multiple udp messages");
                        Console.WriteLine("Usage: .exe client sendtoaddr sendtoport");
                        Console.WriteLine("Usage: .exe server listenport");
                        Console.WriteLine("Usage: .exe forward listenport forwardtoaddr forwardtoport");
                        return;
                    }
            Console.WriteLine(args[0]);

            uh.Run();

        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            Console.Read();
        }
        return;
    }

1 个答案:

答案 0 :(得分:0)

好像你必须将参数传递给可执行文件。没有检查args.Length,所以当没有参数时,它会抛出异常。尝试使用服务器客户端参数调用它。

你可以在那里列出可能的参数:

Console.WriteLine("Usage: .exe sends multiple udp messages");
Console.WriteLine("Usage: .exe client sendtoaddr sendtoport");
Console.WriteLine("Usage: .exe server listenport");
Console.WriteLine("Usage: .exe forward listenport forwardtoaddr forwardtoport");