내 애플리케이션이 IndexOutOfRanage 예외를 발생 시켰을 때 충격을 받았습니다. Debugger Locals Pane을 열었을 때 내 정수가 경계를 넘었 음을 알았습니까? 기본적으로 내 코드에서 이런 일이 :Visual Studio 2010의 버그/이상한 For-Loop 동작?
string folder = Extender.GetSetting<string>("textFolder");
string mlink = folder + "\\" + filename + ".txt";
if(File.Exists(mlink))
{
string fContent = File.ReadAllText(mlink);
rtbLearnGuide.Text = fContent;
string[] strings = fContent.Split(' ');
for (int i = 0; i < strings.Length; i++, words.Enqueue(strings[i]));
}
여기서 문제는 내가 strings[]
의 길이에 도달, 난 아래 사진을 첨부했습니다. 더 이상 무엇
내가이 문제를 두 번째로 재현하는 데 실패한다는 것입니다.
NB : 결과는, 심지어 4 배처럼 다시 실행하려고 후를 그리는 실패 난 다음이었다
var dc = this.CreateGraphics();//and some other stuff
: 나는 this.CreateGraphics();
으로 이전과 비슷한 오늘을 경험 내 코드는 무엇인가 같았다 코드로 돌아가 dc를 명시 적으로 정의하여 작동 중이었습니다. 그런 다음 다시 var로 변경했지만 여전히 작동 중입니다. /?
무엇이 잘못되었을 수도 있습니다.
는 편집 :
난 그냥 순서를 변경하면 작동 것을 발견했다. 예를 들어 :
for (int i = 0; i < strings.Length; words.Enqueue(strings[i]), i++);
는 오류가 발생하지 않습니다.
대부분의 개발자가 예상하는 것처럼 for 루프를 작성하지 않으려는 이유가 있습니까? – CodeNaked
''진술을 결합하는 경우 왜 그만 둡니까? 'words.Enqueue (strings [i ++])'' '그러나 @ CodeNaked의 질문이 실제로 작용합니다. –
정확히는 아니지만 실제로 이것은 나를위한 발견 일 뿐이며 여러 for 루프 문이 뒤로 실행되었습니다. –