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# でそのように書くことはできません。以下のように変更する必要があります。そうしないと、コンパイラ エラー 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 に答える