索引超出了数组的范围?

时间:2017-12-25 12:54:07

标签: c# arrays

我正在创建一个快速项目,它从用户那里获取.txt,将每一行保存到一个数组,然后请求每个ID,具体取决于响应是否包含“无法找到配置文件”,或者有效的个人资料,据此行事。

这是我的代码;

static void Main(string[] args)
    {

        string[] lines = System.IO.File.ReadAllLines(@"C:\\users\\louis\\Desktop\\d.txt");
        string[] avaliableIds = { };
        string errorMessage = "The specified profile could not be found.</h3><br><br>";

        foreach (string c in lines)
        {
            WebRequest req = WebRequest.Create("http://steamcommunity.com/id/" + c);

            WebResponse res = req.GetResponse();
            StreamReader sr = new StreamReader(res.GetResponseStream());

            string returne = sr.ReadToEnd();
            System.Threading.Thread.Sleep(100);

            if (returne.Contains(errorMessage))
            {
                int avaliableArrayLength = avaliableIds.Length;
                int shouldGo = avaliableArrayLength + 1;

                avaliableIds[shouldGo] = c;

            } // Here is where I'm getting the error
        }

        for(int i = 0; i == avaliableIds.Length; i++)
        {
            Console.WriteLine(avaliableIds[i]);
        }
    }

根据我的理解,'shouldGo'的值高于'avaliableIds',所以我的声明有问题,它应该是一个可以保持任何数量的高或低的数组。

请帮助,谢谢。

2 个答案:

答案 0 :(得分:1)

在C#中,数组具有固定大小。您将availableIds声明为空(零长度)数组,因此您无法在其中存储任何数据。

Use a List<string> instead,这是一个可变大小的数据结构。

答案 1 :(得分:0)

i == avaliableIds.Length
应该是 i < avaliableIds.Length