2015-07-08 3 views
0

Я пытаюсь использовать оператор if с помощью bool, который сделает это, если код запускается, как только он не будет запущен снова. Вот код, который я использую.C# Ошибка с 'continue'

int random = Program._random.Next(0, 133); 

if (random < 33) { 
    bool done = false; 

    if(done) 
    { 
     continue; // Error is shown for this statement 
    } 

    Console.WriteLine("Not done!"); 
    done = true; 
} 

Ошибка, отображаемая Visual Studio: «Нет замкнутого контура, из которого можно сломать или продолжить».

+2

Ошибка говорит все. – deathismyfriend

+0

Я понял, что мне нужен bool done = false; вне заявления if, я сделал это. Все еще получаю ошибку. –

+0

Хорошо, @deathismyfriend ... как я могу это исправить? –

ответ

2

В зависимости от требований к классу/методу, вы могли бы поменять местами логика:

if (!done) 
{ 
    Console.WriteLine("Not done!"); 
    done = true; 
} 
0

Вы не можете использовать только продолжать внутри цикла. Таким образом, вы должны жить без этого:

int random = Program._random.Next(0, 133); 
if(random < 33) 
{ 
    bool done = false; 
    if(!done) 
    { 
     Console.WriteLine("Not done!"); 
     done = true; 
    } 
} 

В этом случае следует обратить вспять, если с if (!done) { ... }

+1

Серьезно? Done - это локальная переменная, для которой установлено значение false. Done ничего не делает в вашем коде. – Paparazzi

+0

Конечно, вы правы! Я взял этот пример, поскольку он находится в вопросе. Поэтому я думаю/надеюсь, что это было просто для упрощения кода. Не обвиняй меня. – Matt

0

Вы не можете использовать continue подобное, он может быть использован только в цикле. Оператор continue перейдет к концу цикла и продолжит следующую итерацию, без цикла нет конца цикла для перехода.

Вы можете использовать else вместо:

if (done) { 
    // anything to do? 
} else { 
    Console.WriteLine("Not done!"); 
    done = true; 
} 

Если нет ничего, чтобы сделать, если переменная истинна, вы можете просто обратное выражение вместо:

if (!done) { 
    Console.WriteLine("Not done!"); 
    done = true; 
} 

Примечание: Вы должны хранить переменная done вне области. Теперь у вас есть локальная переменная, которая всегда установлена ​​на false, поэтому код никогда не будет пропущен.

0

Исключение говорит вам, что continue здесь недействителен. Просто нечего делать, и не знает , где для продолжения. Он предназначен для использования в итерации цикла.