6

これは私のコードです:

if (RdoBtnBeepDefault.Checked) SystemSounds.Beep.Play();
else SoundPlayer iPlay = new SoundPlayer(@TxtBeepFile.Text);

iPlay.Play();

そして、ここにエラーがあります:

Embedded statement cannot be a declaration or labeled statement

それが不可能な場合は、方法を教えていただけませんか?

4

2 に答える 2

9

iPlay.Play();ステートメントのelse句の範囲を超えています。if-else複数行のスコープの場合は中かっこで囲んでみてください。

if (RdoBtnBeepDefault.Checked) 
{
    SystemSounds.Beep.Play();
)
else
{ 
    SoundPlayer iPlay = new SoundPlayer(TxtBeepFile.Text);
    iPlay.Play();
)
于 2012-09-18T01:25:36.970 に答える
3

これでも同じエラーが発生する可能性があるだけでなく、

if (RdoBtnBeepDefault.Checked) SystemSounds.Beep.Play();
else int i=0;

理由はロジックです。条件付きフローがその行で終了していることを間接的に意味する if else 条件に単一行ステートメントを入れる場合。その場合、何らかの宣言を使用する場合||上記のように意味をなさない/影響を与えない何かを使用すると、それは一種の文字列リテラルであることを意味します。それは正確に間違っているわけではなく、むしろ不必要です。マインド c# ビジュアル スタジオ エディターは、考えられるほとんどすべてのエラーと不要なメモリの読み込みを減らします。

中かっこを入れると、その変数を同じブロック内でロジックに使用できることを示します。したがって、エディターはそれを可能にします。その時点で、VS は、将来コードを追加する可能性があると想定します。そのため、その行に関する警告のみが表示されます。中括弧がないと、(スコープのために) その変数を使用しないことが確実に想定されます。したがって、それはエラーと見なされます。

于 2014-03-13T05:43:58.687 に答える