2012-08-24 13 views
6

Przechodziłem przez kod źródłowy .Net Framework, aby znaleźć podchwytliwy błąd (HttpApplication.cs), i zauważyłem linie takie jak te w kodzie (są to copy/paste, ja nic nie Edit):Weird nazwa zmiennej (_ [....]) w .Net Kod źródłowy (HttpApplication.cs)

_[....] = true; 

i

_[....] = false; 

Zastanawiam się, czy jest to zaciemnianie kodu, czy jest to jakiś rodzaj C# konwencja, której nigdy wcześniej nie widziałem? VS 2012 wydaje się myśleć, że nie jest to prawdziwy kod.

Czy ktoś może mnie oświecić?

+0

Dosłownie '....", lub ...? W każdym razie wygląda na zaciemnioną. – Ryan

+0

Albo ten kod był przez obfuscator, albo został napisany przez programistę, który powinien zostać zwolniony z jakiejkolwiek firmy, która wytworzyła kod :) – dasblinkenlight

+0

linia jest dosłownie tak wklejona. W rzeczywistości jest to deklaracja na górze pliku, 'private bool _ [...];' –

Odpowiedz

8

Nazwa pola w aktualnym kodzie HttpApplication.cs to "_sync". Istnieje automatyczne narzędzie, które jest uruchamiane nad źródłem, zanim trafi ono do ogółu społeczeństwa; to narzędzie szoruje rzeczy takie jak nazwy programistów itp. Wygląda na to, że było to tylko fałszywe pozytywne. Przedstawię odpowiedni zespół, aby sprawdzić, czy można go poprawić.

0

Masz rację, że kod źródłowy zawiera zmienną binarną o nazwie _[....]. Domyślam się, że nazwy zmiennej nie można było ustalić w momencie napisania kodu; i zapomniano, że zostanie naprawiony później. http://reflector.webtropy.com/default.aspx/Net/Net/[email protected]@[email protected]/DEVDIV/depot/DevDiv/releases/whidbey/netfxsp/ndp/fx/src/xsp/System/Web/[email protected]/10/[email protected]

+0

, ale AFAIK, który nie kompilowałby się (_ [....] nie jest poprawną nazwą zmiennej) –

+1

@ MalcolmO'Hare: Microsoft może mieć niestandardowy preprocessing jako część swoich skryptów budujących. – Brian

1

Ten szczególny znak wydaje się, aby pokazać się całym .NET kodu źródłowego odniesienia. Jest znacznie częściej używany w komentarzach niż jako zmienna, ale nie jest jedynym miejscem, w którym się pojawia (WeakKeyDictionary używa go jako celu, na przykład lock).

W wielu przypadkach. jest to synonim słowa "sync", jak w:

InstancePersistenceContext.cs:1586: Fx.AssertAndThrowFatal(this.context.Active, 
    "Out-of-[....] between InstanceExecutionContext and ExecutionAsyncResult."); 

EditModeSwitchButton.cs:64: // [....] to the owning PropertyContainer only if requested to do so 

i moje ulubione, z przestarzałym System.Web.Mobuile Klasa:

TemporaryBitmapFile.cs: private void [....]() 

My najlepszy przypuszczenie, aby skąd pochodzi to, że jest to etap poprzedzający publikację, który jest wykonywany na kodzie źródłowym, zanim zostanie opublikowany publicznie (pojawia się we wszystkich egzemplarzach źródła referencyjnego, które znalazłem, ale nie jest udostępniany przez SSCLI, który został zwolniony chwilę wstecz. , RemotingProxy.cs:222:

SSCLI: int callType = Message.Sync; 
RefSec: int callType = Message.[....];