我基本上只是想知道如何让这个循环连续循环重复?我只是想不出怎么做。一旦它到达字符串的末尾,它就会抛出异常。我已经尝试过goto但是如果我只是在错误的游戏中使用它或者我可以让它工作的话它没有工作idk。
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (this.checkBox2.Checked)
{
int startIndex = 0;
string str = "hiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii";
int length = str.Length;
while (true)
{
Application.DoEvents();
Thread.Sleep(200);
startIndex++;
string str2 = str.Substring(startIndex, 15);
label2.Text = str2;
if (startIndex == length)
{
startIndex = 0;
}
答案 0 :(得分:3)
字符串(或任何数组或列表或集合)中的最后一个有效索引始终是长度 - 1,而不是长度。此外,由于您正在使用长度为15的子字符串,因此您实际上希望在结束之前停止15个字符。您需要将if语句更改为
if(startIndex == length - 16)
startIndex = 0;
答案 1 :(得分:1)
您的while循环不是问题,而是您对Substring
的调用。
一旦startIndex
变得足够高,字符串中就不会再有15个字符......所以Substring
会抛出ArgumentOutOfRangeException
。
要解决此问题,您需要将if语句更改为:
if(startIndex == length - 16)
答案 2 :(得分:0)
if (startIndex + 15 == length)
{
startIndex = 0;
}