2016-05-13 9 views
13

Podczas demonstracji zobaczyłem fragment kodu testowego, w którym programista wkleił adres URL kodu. A kiedy deweloper zbudował aplikację, wszystko działało, ale wszyscy byliśmy bardzo ciekawi, dlaczego kompilator zaakceptował adres URL jako linię.URL w kodzie nie łamiącym budowania

public class Foo 
{ 
    // Why doesn't 'http://www.foo.org' break the build? 
    public void Bar() 
    { 
     http://www.foo.org 
     Console.WriteLine("Do stuff"); 
    } 
} 

Dlaczego powyższy kod został zbudowany? Czy kompilator traktuje wiersz jako komentarz?

+4

Fajnie, zamierzam zrobić dokładnie to i przejrzeć mój kod, zadzwonić z moimi współpracownikami, dzięki :) –

+0

C# obsługuje 'goto', tutaj kompilator czyta' http: 'jako etykietę nie jako URL – Raghuveer

+0

Możesz wyraźnie zobaczyć, co się tutaj dzieje. Ale w IDE nie jest wyraźnie jednoznaczny, ponieważ zmienia kolor na niebieski i łączy się. – SeM

Odpowiedz

22

Jeśli wypróbujesz dokładnie powyższy kod, otrzymasz warning CS0164: This label has not been referenced.

Ostrzeżenie tutaj daje wyraźną wskazówkę, co się stało.

Wklejenie adresu URL utworzyło etykietę http:, np. do użytku z goto, po którym natychmiast następuje komentarz jednolinijkowy, //www.foo.org.

+0

Świetne wyjaśnienie. Dziękuję Ci. – smoksnes

Powiązane problemy