2017-12-25 15 views
2

Ich erstelle ein schnelles Projekt, das eine .txt-Datei vom Benutzer nimmt, speichert jede Zeile in einem Array und fragt dann nach jeder ID, je nachdem, ob die Antwort 'Das Profil konnte nicht gefunden werden' oder eine gültige Profil, entsprechend handeln.Index war außerhalb der Grenzen eines Arrays?

Hier ist mein Code;

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

Von dem, was ich verstehe, ‚shouldGo‘ einen höheren Wert als ‚avaliableIds‘ hat, so etwas ist falsch mit meiner Erklärung, es sollte ein Array sein, die so hoch wie oder so niedrig jede Anzahl möglich halten können .

Bitte helfen Sie, danke.

+0

Sie versuchen, Array-Element mit array.Length + 1 Index Wert zuweisen, wie kann es möglich sein? –

+0

Ich versuche, eins zu der Länge dieses Arrays hinzuzufügen, wenn es sich selbst zu den verfügbaren IDs hinzufügt, wird es keine anderen Werte überlappen, die bereits dort –

+0

Sie haben so wunderbar selbsterklärende Variablennamen. es sollte offensichtlich sein, dass ** ein ** mehr ** als die ** verfügbare ** Array-Länge ** nicht ** gehen sollte. –

Antwort

1

In C# sein sollte, haben Arrays eine feste Größe. Sie deklarieren availableIds als ein leeres Array (null Länge), so dass Sie keine Daten darin speichern können.

Use a List<string> instead, das ist eine Datenstruktur variabler Größe.

+0

Danke, dass mit ein paar anderen Anpassungen behoben :) –

0

i == avaliableIds.Length

i < avaliableIds.Length

Verwandte Themen