2012-08-24 16 views
6

Stavo passando attraverso il codice sorgente di .NET Framework per trovare un bug insidioso (HttpApplication.cs), e ho notato righe come questi nel codice (si tratta di copia/incolla, non ho scrivere nulla):Nome variabile strano (_ [....]) in. Codice sorgente Net (HttpApplication.cs)

_[....] = true; 

e

_[....] = false; 

mi chiedo se questo è offuscato codice, o si tratta di una sorta di C# convention che non ho mai visto prima? VS 2012 sembra pensare al suo codice non reale.

Qualcuno può illuminarmi?

+0

Letteralmente '....', o ...? Ad ogni modo, sembra offuscato. – Ryan

+0

O questo codice ha subito un offuscatore oppure è stato scritto da un programmatore che dovrebbe essere licenziato da qualsiasi azienda che ha prodotto il codice :) – dasblinkenlight

+0

la riga è letteralmente incollata. In realtà esiste una dichiarazione nella parte superiore del file, 'private bool _ [...];' –

risposta

8

Il nome del campo così com'è nel codice HttpApplication.cs attuale è "_sync". C'è uno strumento automatizzato che viene eseguito sulla fonte prima che venga diffuso al pubblico in generale; questo strumento pulisce cose come i nomi degli sviluppatori, ecc. Sembra che questo sia solo un falso positivo. Ne parlerò con il team appropriato per vedere se può essere corretto.

0

Hai ragione che il codice sorgente include una variabile booleana denominata _[....]. Immagino che il nome della variabile non possa essere deciso al momento in cui il codice è stato scritto; e fu dimenticato di essere riparato più tardi. 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

ma AFAIK che non si compilerebbe (_ [....] non essendo un nome di variabile valido) –

+1

@ MalcolmO'Hare: Microsoft potrebbe avere preelaborazioni personalizzate come parte dei propri script di compilazione. – Brian

1

Questo particolare gettone sembra mostrare tutto NET codice sorgente di riferimento. E 'di gran lunga più usato spesso nei commenti che come una variabile, ma HttpApplication.cs non è l'unico posto si presenta (WeakKeyDictionary usa come bersaglio lock, per esempio.)

In molti casi. è un sinonimo per la parola "sync", come in:

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 

e il mio preferito, da un obsoleto System.Web.Mobuile classe:

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

mio ipotesi migliore da dove è venuto è che è una fase di pre-pubblicazione che viene eseguita sul codice sorgente prima che sia rilasciata al pubblico (appare in ogni copia della fonte di riferimento che ho trovato, ma non è la SSCLI rilasciata qualche tempo fa. Confronta, per esempio , RemotingProxy.cs:222:

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