2012-09-18 44 views
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

如果这是不可能的,能告诉我怎么?

+2

错误是因为除非使用'{大括号}',否则您不能在单个语句if/else中声明变量('iPlay')。 (我认为语言是为避免范围模糊而设计的......) – Cameron

回答

9

iPlay.Play();超出了您的if-else声明中您的else子句的范围。尝试使用大括号括住多行范围。

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

这是我建议你总是使用大括号即使只用一行的最大原因**。 –

+1

@PreetSangha即使我对每个if-else子句都有一行,我用它把它括在大括号中。 :D我不知道为什么我无法阻止自己这样做......嘿, –

3

不仅如此,即使这可以产生相同的误差

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

原因是逻辑。如果您在if条件中放入单行语句,则间接意味着条件流以该行结束。在这种情况下,如果您使用某些声明||如上所述,这将不会以任何方式理解/影响,那意味着它是一种字符串文字。这并非完全错误,而是不必要的。 Mind c#visual studio编辑器可以减少几乎所有可能的错误和不必要的内存加载。

当你使用大括号时,它表示你可能会在同一个块内使用该变量来获得某些逻辑。所以编辑会允许你这样做。当时VS假设你可以在将来添加代码。所以它只会给你关于该行的警告。没有大括号,它坚定地认为你不打算使用该变量(由于范围)。所以,它将这作为错误。