gpt4 book ai didi

c# - Visual Studio 2010 中的错误/奇怪的 For-Loop 行为?

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:58 26 4
gpt4 key购买 nike

当我的应用程序现在触发 IndexOutOfRanage 异常时,我感到非常震惊。我打开了 Debugger Locals Pane 并发现我的整数越过了它的边界?基本上我的代码中有这样的东西:

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[]的长度,我在下面附上了一张图片。

Weird For-Loop behaviour

更奇怪的是我第二次没有重现这个行为。

注意: 今天早些时候我遇到了类似的事情 this.CreateGraphics(); 我的代码是这样的:

var dc = this.CreateGraphics();//and some other stuff

结果是它甚至在尝试重新运行 4 次后仍未能绘制它,然后我返回到代码并明确定义 dc,瞧,它正在工作。然后我把它改回 var,它仍然有效 :/?

可能出了什么问题?

编辑:

我刚刚发现更改顺序有效。例如:

for (int i = 0; i < strings.Length; words.Enqueue(strings[i]), i++);

不会引发任何错误。

最佳答案

要回答您问题的第一部分,您正在执行 Enqueue before for 循环的测试条件。所以

for (int i = 0; i < strings.Length; i++, words.Enqueue(strings[i]));

应该是:

for (int i = 0; i < strings.Length; i++) words.Enqueue(strings[i]);

基本上,“增量”部分总是在“测试”部分之前执行。

关于c# - Visual Studio 2010 中的错误/奇怪的 For-Loop 行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com