Po zbadaniu sposób, aby wyjść zagnieżdżonych pętli, postanowiłem spróbować użyć goto
,Dlaczego nie mogę dodać etykiety goto na końcu metody?
private void example()
{
for (int i = 0; i < 100; i++)
{
for (int ii = 0; ii < 100; ii++)
{
for (int iii = 0; iii < 100; iii++)
{
goto exitMethod;
}
}
}
exitMethod:
}
Ale z jakiegoś powodu, jeśli mogę umieścić goto
etykieta jest na samym końcu tej metody, Visual Studio 2012 (ostatecznym) narzeka (i nie będzie skompilować),
Ale jeśli mogę zmienić kod do tego,
private void example()
{
for (int i = 0; i < 100; i++)
{
for (int ii = 0; ii < 100; ii++)
{
for (int iii = 0; iii < 100; iii++)
{
goto exitMethod;
}
}
}
exitMethod:
int someUnneededVariable; // Just an example, if I add ANY piece of code the error vanishes.
}
Żaden z błędów nie pojawia się (i kompiluje); Przeszukałem wszystkie referencje MSDN, które znam i nie mogłem nic na ten temat znaleźć.
Wiem, że mogę łatwo rozwiązać ten problem, używając return;
; mimo to nadal chciałbym dowiedzieć się, co powoduje ten błąd.
Wiem; ale to jest zasada, z mojego rozumienia to powinno się kompilować, ale tak nie jest. – Sam
@Sam: Nie, to naprawdę nie powinno :) –
powinieneś napisać kod po etykiecie. Lub atlease "; ' Po naklejce, aby studio graficzne zrozumiało, że po tym nie ma więcej kodu. –