2017-05-18 1 views
-2

Je possède ce qui suit pour le cycle:C# pauses code après ce pour le cycle

string[] sfind = new string[Globais.dep.Length]; 
int udt = 0; 
for (int getnum = 0; getnum <= Globais.dep.Length; getnum++) 
{ 
    if (Globais.dep[getnum].Contains(items[1])) 
    { 
     sfind[udt] = Globais.dep[getnum]; 
     udt ++; 
    } 
} 

J'ai plus code suivant ce cycle, mais je l'ai regardé avec le débogueur et il ne fonctionne pas le code ci-dessous, après la à la fin du cycle, il casse tout le code. Qu'est-ce que je fais mal ici? Je ne vois pas quel est le problème avec le cycle.

Peu importe, merci!

+3

ce que signifie « il se casse le code entier »? –

+1

Comment "casser le code entier"? En quoi échoue-t-il réellement? – David

+0

Il ne lance pas le code ci-dessous @TimSchmelter – jeyejow

Répondre

8

liste ou un tableau indexeurs commencent à 0 et se terminent à longueur 1, mais vous utilisez getnum <= Globais.dep.Length, utilisez < au lieu de <=:

for (int getnum = 0; getnum < Globais.dep.Length; getnum++) 
{ 
    // ... 
} 

Side note: votre code a provoqué une IndexOutOfRangeException que vous avez soit remarqué, alors vous auriez dû le mentionner dans la question, ou non, alors quelque chose le cache comme un try...catch vide qui est normalement une mauvaise idée.

+0

Oh snap! J'ai complètement oublié ça! Merci! – jeyejow

1

je suppose, vous pouvez utiliser la boucle foreach comme ci-dessous

if(Globais.dep.Length > 0) 
{ 
    string[] sfind = new string[Globais.dep.Length]; 
    foreach (string str in Globais.dep) 
    { 
     if (str.Contains(items[1])) 
     { 
      sfind[str] 
     } 
    } 
}