2012-08-24 13 views
6

Estaba entrando en el código fuente de .Net Framework para encontrar un error complicado (HttpApplication.cs), y noté líneas como éstos en el código (estos son copia/pega, no me editar cualquier cosa):Nombre extraño de la variable (_ [....]) en .Net Source Code (HttpApplication.cs)

_[....] = true; 

y

_[....] = false; 

me pregunto si esto se ofusca código, o se trata de algún tipo de C# convención que nunca he visto antes? VS 2012 parece pensar que no es un código real.

¿Alguien puede aclararme?

+0

Literalmente '....', o ...? De todos modos, parece ofuscado. – Ryan

+0

O bien este código ha pasado por un ofuscador, o ha sido escrito por un programador que debe ser despedido de cualquier compañía que haya producido el código :) – dasblinkenlight

+0

la línea está literalmente como pegada. Hay una declaración en la parte superior del archivo, 'private bool _ [...];' –

Respuesta

8

El nombre del campo tal como existe en el código HttpApplication.cs real es "_sync". Hay una herramienta automatizada que se ejecuta sobre la fuente antes de que salga al público en general; esta herramienta borra cosas como los nombres de los desarrolladores, etc. Parece que esto fue solo un falso positivo. Lo mencionaré con el equipo apropiado para ver si se puede corregir.

0

Tiene razón en que el código fuente incluye una variable booleana llamada _[....]. Supongo que el nombre de la variable no pudo decidirse en el momento en que se escribió el código; y fue olvidado para ser arreglado más tarde. 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

pero AFAIK no compila (_ [....] no es un nombre de variable válido) –

+1

@ MalcolmO'Hare: Microsoft puede tener preprocesamiento personalizado como parte de sus scripts de compilación. – Brian

1

Este token particular parece a aparecer en todo .NET código fuente de referencia. Se utiliza mucho más a menudo en los comentarios que como una variable, pero HttpApplication.cs no es el único lugar en el que se muestra (WeakKeyDictionary lo usa como un objetivo lock, por ejemplo.)

En muchos casos. que es un sinónimo de la palabra "sincronización", como en:

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 

y mi favorito, de una obsoleta clase System.Web.Mobuile:

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

Mi mejor conjetura cuanto a de dónde viene es que es un paso previo a la publicación que se realiza en el código fuente antes de que se publique (aparece en cada copia de la fuente de referencia que he encontrado, pero no en el SSCLI que se lanzó hace un tiempo. Comparar, por ejemplo , RemotingProxy.cs:222:

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