2015-07-20 30 views
5

Podobno można utworzyć Do ... Loop -Loop bez warunku. Poniższy kod kompiluje z .NET 4.5 (fiddle), jak również z Roslyn (fiddle):Gdzie jest Do ... Pętla bez udokumentowanego stanu?

Public Sub Main() 
    Do 
     Console.WriteLine("Hello World") 
     Exit Do 
    Loop 
End Sub 

Jednak gramatyka na documentation page oferuje tylko dwie następujące opcje:

Do { While | Until } condition 
    [ statements ] 
    [ Continue Do ] 
    [ statements ] 
    [ Exit Do ] 
    [ statements ] 
Loop 
-or- 
Do 
    [ statements ] 
    [ Continue Do ] 
    [ statements ] 
    [ Exit Do ] 
    [ statements ] 
Loop { While | Until } condition 

Czy to błąd w kompilatorze, błąd w dokumentacji lub po prostu nie wyglądam wystarczająco mocno?

+0

Kompiluje się nawet z .NET 4.6 – greenhoorn

+1

Wygląda jak błąd w dokumentacji. Ktoś powinien zgłosić to MS. – dbasnett

+3

@dbasnett - Postanowiłem zostać "kimś" i zgłosiłem to. Nie wiem, czy ktoś jeszcze ma. –

Odpowiedz

9

W razie wątpliwości, należy skonsultować się language specification, zamiast odniesienia:

10.9.1 Podczas gdy ... Koniec ... Choć i uwagi instrukcji pętli

A While lub Do pętlę pętle instrukcji oparte na wyrażeniu Boolean. ... wyrażenie można wstawić po słowie kluczowym Do lub po słowie kluczowym Loop, ale nie po . ... To jest również ważne, aby określić brak wyrażenia;

(Moja nacisk)

Odniesienie język stara się być bardziej proste, ale może utracić istotne szczegóły. Specyfikacja języka powinna odpowiadać temu, co implementuje kompilator.

-3

Zobacz Części sekcji poniżej w dokumentacji:

stan opcjonalne. Wyrażenie Boolean. Jeśli stan jest Nic, Visual Basic traktuje to jako False.

+0

Dokumentacja: _ "** While **: Wymagane, chyba że użyto Do końca. [...] ** Do **: Wymagane, o ile nie jest użyte" _. OP jest ciekawostką, dlaczego 'Do ... Loop' bez OR OR Dop jest poprawne.NBF nie jest "Do [{While While | Aż do} warunku] '. – CodeCaster

+0

@CodeCaster OK, co oznacza "Opcjonalnie" w dokumentacji? Może być błąd w "Wymagane ..." dla Do/Do, nie w "Opcjonalnie"? –

1

myślę zdanie klucz w dokumentacji jest

Można użyć Choć lub do czasu, aby określić stan pacjenta, ale nie jednocześnie.

Więc jeśli chcesz określić warunek, którego musisz użyć. Bez warunku nie musisz niczego określać.

Pozostawienie warunku jest całkowicie poprawne i spowoduje nieskończoną pętlę.