Как заставить цикл повторяться вечно? - PullRequest
0 голосов
/ 10 февраля 2012

Мне просто интересно, как я могу сделать так, чтобы цикл непрерывно повторялся вечно? Я просто не могу понять, как это сделать. как только он достигает конца строки, он генерирует исключение. Я попробовал goto, но он не работал, если я просто использовал его в неправильной игре или что-то, но я мог заставить его работать.

    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;
                }

Ответы [ 3 ]

3 голосов
/ 10 февраля 2012

Последний допустимый индекс в строке (или любом массиве, списке или коллекции) всегда является длиной - 1, а не длиной.Кроме того, поскольку вы берете подстроку длиной 15, вы на самом деле хотите остановить 15 символов до конца.Вы хотите изменить свой оператор if на

if(startIndex == length - 16)
    startIndex = 0;
1 голос
/ 10 февраля 2012

Ваш цикл while не проблема, это ваш вызов Substring.

Как только startIndex станет достаточно высоким, в строке не будет больше 15 символов ... так что Substring выдаст ArgumentOutOfRangeException.

Чтобы устранить проблему, вам нужно изменить выражение if на что-то вроде:

if(startIndex == length - 16)
0 голосов
/ 10 февраля 2012
if (startIndex + 15 == length)
{
    startIndex = 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...