2017-05-08 6 views
-1

私はC#で、このコードを使用する必要があります。どうすればいいですか?goto文のエラーの範囲内で、このようなラベル 'resetupdate'はありませんか?

while(true){ 
    resetupdate: 
    //somecode here 
} 
goto resetupdate; 

をしかしラインgoto resetupdate;に私はこのエラーを取得する:

No such label 'resetupdate' within the scope of the goto statement

どのように私はその問題を解決することができますか?またはresetupdateに電話するにはどうすればよいですか?

+5

コントロールフローステートメントの本体にジャンプすることはできません。 –

+0

@Damien_The_Unbelieverはその目的のために他の方法を使用できますか? –

+0

あなたがしようとしていることのより完全な*例が必要です。私は、whileの終わりに少なくとも*いくつかのコードがあると推測しています。そして、あなたがここに示したように、 'goto'は無条件ではありません。すべてのコンテキストが削除されたソリューションに対するあなたの試みではなく、*問題*を提示してください。 –

答えて

0

スコープは '{'で、 '}'トークンで終了します。ラベルは子スコープ内にあるため、アクセスできません。あなたががこのような何かをしたいと思う理由はgotoの構造のこれらのタイプは罰金コンパイルするが、他のために全く読めないです....

// YUCK YUCK YUCK! 

start: 
// some code 
resetupdate: 
//somecode here 
// ... break becomes: 
if (someCondition) { goto exitloop; } 
// 
goto start; 
exitloop: 
// your condition code... 
goto resetupdate; 

わからない:

は明らかに、あなたはより多くの、醜い後藤さんを使用してこの問題を解決することができますソフトウェア開発者。


さて、第二のために元の質問を見てみましょう私たちなければならない。

while(true){ 
    // **1 
    resetupdate: 
    //somecode here **2 
} 
goto resetupdate; 

は今、私はsomecode(** 2)それ以外の場合は、この、何とかbreakを放出することをここに推測しています全体のラベル/ goto構成は意味をなさない。

resetupdate: 
while(true){ 
    //somecode here that uses break 
} 
goto resetupdate; 

しかし、これは** 1はまた、コードが含まれますときに発生します問題が解決しない:だから、ループに戻って得ることは、単にResetUpdateメソッドを動かすの問題になります。これを行うには、より多くのgotoとラベルを使用するようにコードを変更することができます...

最初の場所でこれらの種類の構造を避ける方がずっと優れています。

+0

これは修正ではないので、最初のgotoを渡すことはありません –

+0

@ LeMoN.xaH元の質問の 'while(true)'と同じくらいうまく行きます。 – atlaste

+0

@ LeMoN.xaH良い、私は答えにいくつかの情報を追加しました。それは正常に動作します、それはちょうど地獄のように醜いです。 – atlaste

関連する問題