2012-06-10 4 views
4

Почему следующий сбой:недействительна внедренная ошибка заявления 88

while (true) 
    int a; 

if(true) 
    int a; 

if(true) 
    int a = 5; 

if(true) 
    int a = somestaticfunction(); 

apperently, если не удается с: «недействительной вложенной ошибкой заявления 88» на Visual Studio.

+0

Какое из четырех утверждений не удается? – comecme

+0

Предположим, что это сработает, какова цель? –

+0

Все они терпят неудачу. Цель была бы использовать somestaticфункции, чтобы что-то изменить, хотя я не использую его возвращаемое значение. Это должна быть ошибка компиляции. –

ответ

6

Адрес good explanation о том, что происходит, это часть спецификации языка. Кажется, что Objective C, Java и C имеют одинаковые ограничения. Вы можете обойти это, приложив свои заявления так.

while(true) 
    {int a;} 

if(true) 
    {int a;} 

if(true)  
    {int a = 5;}  

if(true)  
    {int a = somestaticfunction();}  
0

Это не может быть написано так, как на C#. Вы должны изменить его, как показано ниже еще будет генерировать Compiler Error CS1023:, который говорит:

Внедренный оператор, например, заявление, следующий за если заявления, может содержать ни заявления, ни меченого заявление.

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

if(true) 
{ 
    int a = 5; 
} 

if (true) 
{ 
    int a = somestaticfunction(); 
}