我遇到这个代码片段的一个非常奇怪的行为。
通常,当声明为16但是离开时,声明不会输入。
在我的情况下,它输入i=16
并执行以ArrayOutOfBoundsException
结尾的零案例。
每次拨打foo()
时,都会重复此行为
对此有任何解释吗?
void foo()
{
Thread.Sleep(2000);
try
{
for (int i = 0; i < 16; i++)
{
#region Switch
(switch on 0 to 15 and do something unrelated)
#endregion
}
}
catch (Exception ex)
{
MessageBox.Show("Exception occured: " + ex);
}
}
答案 0 :(得分:3)
为什么不循环到你的数组长度?
for (int i = 0; i < array.Length; i++)
{
//Your secret code here
}
另外,请确保您没有在任何地方更改循环内的i
值。
您将永远不会使用此代码获取异常(除非您在循环内修改i
),无论数组长度如何。