2016-06-14 16 views
-3

Ich erhalte den Fehler bei getProxy(), der Fehler ist Index outofbounds.Index ist außerhalb des Bereichs

Fehler:

An unhandled exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll 
Additional information: 
Index was out of range. Must be non-negative and less than the size of the collection. 

Code:

static List<String> proxies = new List<String>(); 


private static String getProxy() 
{ 
    lock (proxies) 
    { 
     return proxies[new Random().Next(0, proxies.Count)]; 
    } 
} 

Es ist nicht leer ist, hat einen Proxy-innen, der Fehler in meiner Ladefunktion nicht, es ist hier.

Ich habe einen Haltepunkt getestet und ihre Fehler es hat Proxies den Wert von Count = 3 und proxies.count hat den Wert 3.

+3

Das ist eine Menge Code, von denen einige nicht relevant ist, vermute ich. Könnten Sie die Teile herausschneiden, die wahrscheinlich nicht Teil des Problems sind? Die Verwendung/Importe kommen mir in den Sinn. – GillesDV

+1

Wenn Sie eine Ausnahme wie diese erhalten, lassen Sie den Debugger an der Ausnahmebedingung unterbrechen und schauen Sie sich um. Bei dieser besonderen Ausnahme wird Ihre Indizierung wahrscheinlich außerhalb einer Liste/Array-Grenze ausgeführt. – GEEF

+0

@GillesDV Kein Problem, sorry dafür. GEEF Das habe ich schon gemacht. – sum1hor

Antwort

0

Die Antwort von @Gendolkari:

If proxies contains no elements at all, then it would be trying to access the first element of an empty list and throw this exception.

return proxies[new Random().Next(0, proxies.Count)]; 

==>

return proxies[new Random().Next(0, 0)]; 

==>

return proxies[0]; 

Das verursacht eine ArgumentOutOfRangeException wie in der Dokumentation für List(T).Item angegeben, da Proxies leer ist.

+0

Zusätzliche Informationen: Index lag außerhalb des zulässigen Bereichs. Muss nicht negativ und kleiner als die Größe der Sammlung sein. – sum1hor

+0

Ich habe einen Haltepunkt hinzugefügt und debuggte, Proxies hat den Wert von Count = 3 und proxies.count hat den Wert 3. – sum1hor

+0

ok, aber da dieser Code mit einer leeren Liste abstürzen wird, müssen Sie es trotzdem ändern. Siehe auch den Rat zur Verwendung der Sperre https://msdn.microsoft.com/en-gb/library/c5kekkcz.aspx – buffjape

Verwandte Themen