2012-08-24 3 views
6

Ich war durch.Net Framework Quellcode zu finden, um einen kniffligen Fehler (HttpApplication.cs) zu finden, und ich bemerkte Zeilen wie diese im Code (diese sind copy/Pasten, ich habe nichts bearbeiten):Weird Variablenname (_ [....]) in .Net Quellcode (HttpApplication.cs)

_[....] = true; 

und

_[....] = false; 

ich frage mich, wenn dieser Code verschleiert wird, oder ist dies eine Art von C# Konvention, die ich noch nie zuvor gesehen habe? VS 2012 scheint seinen nicht realen Code zu denken.

Kann mir jemand aufklären?

+0

Buchstäblich '....', oder ...? Wie auch immer, es sieht verschleiert aus. – Ryan

+0

Entweder ist dieser Code durch einen Obfuscator, oder er wurde von einem Programmierer geschrieben, der von welcher Firma, die den Code erzeugt hat, gefeuert werden sollte :) – dasblinkenlight

+0

Die Zeile ist wörtlich wie eingefügt. Theres tatsächlich eine Deklaration an der Spitze der Datei, 'private bool _ [...];' –

Antwort

8

Der Name des Feldes, wie es in dem tatsächlichen HttpApplication.cs-Code vorhanden ist, ist "_sync". Es gibt ein automatisiertes Werkzeug, das über die Quelle läuft, bevor es an die Öffentlichkeit geht; Dieses Tool scrubbelt Dinge wie Namen von Entwicklern usw. Es sieht so aus, als wäre das nur ein falsches Positiv. Ich werde es mit dem entsprechenden Team besprechen, um zu sehen, ob es korrigiert werden kann.

0

Sie haben Recht, dass der Quellcode eine boolesche Variable mit dem Namen _[....] enthält. Ich schätze, der Name der Variablen konnte zu dem Zeitpunkt, an dem der Code geschrieben wurde, nicht entschieden werden. und es wurde vergessen, später repariert zu werden. 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

aber AFAIK, das nicht kompilieren würde (_ [....] ist kein gültiger Variablenname) –

+1

@ MalcolmO'Hare: Microsoft hat möglicherweise benutzerdefinierte Vorverarbeitung als Teil ihrer Build-Skripts. – Brian

1

Diese besondere Token scheint alle über .NET Referenz Quellcode zu zeigen. Es ist weit häufiger in den Kommentaren als als Variable verwendet, aber HttpApplication.cs ist nicht der einzige Ort, es zeigt sich (WeakKeyDictionary verwendet es als lock Ziel, zum Beispiel.)

In vielen Fällen. es ist ein Synonym für das Wort "sync", wie 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 

und meinem Favoriten, von einer veralteten System.Web.Mobuile Klasse:

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

Mein best guess, wo es herkommt, ist, dass Es ist ein Vorveröffentlichungsschritt, der im Quellcode ausgeführt wird, bevor er für die Öffentlichkeit freigegeben wird (er erscheint in jeder Kopie der Referenzquelle, die ich gefunden habe, aber nicht der SSCLI, der vor einiger Zeit veröffentlicht wurde. Vergleichen Sie zum Beispiel , RemotingProxy.cs:222:

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