5

为什么以下失败:

while (true)
   int a;

if(true)
   int a;

if(true)
   int a = 5;

if(true)
  int a = somestaticfunction();

显然,如果失败并显示:Visual Studio 上的“无效嵌入语句错误 88”。

4

2 回答 2

8

这是对正在发生的事情的一个很好的解释,它是语言规范的一部分。似乎Objective C、Java和C也有同样的限制。您可以通过像这样封闭您的陈述来解决它。

while(true)
    {int a;}

if(true)
    {int a;}

if(true)      
    {int a = 5;}      

if(true)      
    {int a = somestaticfunction();}      
于 2012-06-10T15:15:33.837 回答
0

在 C# 中不能这样写。您应该像下面这样更改它,否则它将生成Compiler Error CS1023:它说:

嵌入式语句,例如 if 语句之后的语句,既不能包含声明,也不能包含带标签的语句。

        while (true)
        {
               int a;
        }
if(true)
{
   int a;
}

if(true)
{
   int a = 5;
}

if (true)
{
    int a = somestaticfunction();
}
于 2012-06-10T15:17:09.687 回答