C# 嵌入语句的错误

C# 嵌入语句的错误,c#,C#,这是我的代码: if (RdoBtnBeepDefault.Checked) SystemSounds.Beep.Play(); else SoundPlayer iPlay = new SoundPlayer(@TxtBeepFile.Text); iPlay.Play(); 下面是错误: 嵌入语句不能是声明或标记语句 如果不可能,请告诉我怎么做?iPlay.Play()超出了if-else语句中的else子句的范围。尝试用大括号括起多行范围 if (RdoBtnBeepDefault.C

这是我的代码:

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

iPlay.Play();
下面是错误:

嵌入语句不能是声明或标记语句

如果不可能,请告诉我怎么做?

iPlay.Play()
超出了
if-else
语句中的
else
子句的范围。尝试用大括号括起多行范围

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

不仅如此,即使这样也会产生同样的错误

if (RdoBtnBeepDefault.Checked) SystemSounds.Beep.Play();
else int i=0;
原因是逻辑。如果将单行语句置于If-else条件中,这间接意味着条件流以该行结束。在这种情况下,如果您使用上面的一些声明| |某种东西,它在任何方面都没有意义/影响,那么这意味着它是一种字符串文字。这并不是完全错误的,而是不必要的。Mind c#visual studio editor减少了几乎所有可能的错误和不必要的内存加载


当你放大括号时,它表明你可以在同一块中使用这个变量来进行一些逻辑。因此,编辑器将允许您这样做。此时,VS假定您将来可能会添加代码。所以它只会给你关于那条线的警告。如果没有大括号,它将坚定地假设您不会使用该变量(由于作用域)。因此,它将其视为错误。

错误是因为您不能在单个语句if/else中声明变量(
iPlay
),除非您使用
{brates}
。(我认为该语言的设计是为了避免范围歧义…)这是我建议您始终使用大括号的最大原因,即使只有一行。@PreetSangha即使我每个if-else子句都有一行,我也用大括号将其括起来。:我不知道为什么我不能阻止自己做那件事。。赫赫