2012-12-20 13 views
13

मैंने अभी माइक्रोसॉफ्ट से .NET 4.5 संदर्भ स्रोत स्थापित किया है क्योंकि मैं एक समस्या को डीबग करने की कोशिश कर रहा हूं और मैं निम्नलिखित में HttpApplication.cs में ठोकर खा रहा हूं।`_ [....]` वैध पहचानकर्ता है?

// execution step -- call asynchronous event 
internal class AsyncEventExecutionStep : IExecutionStep { 
    private HttpApplication  _application; 
    private BeginEventHandler _beginHandler; 
    private EndEventHandler  _endHandler; 
    private Object    _state; 
    private AsyncCallback  _completionCallback; 
    private AsyncStepCompletionInfo _asyncStepCompletionInfo; // per call 
    private bool    _[....];   // per call 
    private string    _targetTypeStr; 

अगली-से-अंतिम पंक्ति private bool _[....]; // per call पर ध्यान दें।

_[....] एक वैध पहचानकर्ता (आईएल समेत संकलन के किसी भी स्तर पर) या संकलन के बाद स्रोत बदल दिया गया है?

+6

नहीं, या आप इसे संकलित करने के लिए प्रयास नहीं किया है? संकलक मानता है कि यह एक अवैध सरणी घोषणा है। –

+1

आप इसे संकलित नहीं कर सकते क्योंकि संदर्भ स्रोत समाधान फ़ाइल के साथ नहीं आता है। मुझे यकीन है कि यह ** उपयोगकर्ता-भूमि ** सी # में मान्य पहचानकर्ता नहीं है, लेकिन मुझे पता है कि कंपाइलर कक्षा के नाम उत्पन्न करता है और जैसा कि आप विजुअल स्टूडियो में लिख नहीं सकते थे, इसलिए पूछना कि यह किसी पर मान्य है या नहीं आईएल सहित संकलन का स्तर। –

+1

@ बॉब्सन एमएस संदर्भ स्रोत की कुछ सफाई करता है, जो ज्यादातर टिप्पणियों से संबंधित है। अपने क्लीनर को थोड़ा साफ "साफ" मानें। – CodesInChaos

उत्तर

8

नहीं; यह मान्य नहीं है।

स्रोत जारी करने से पहले, माइक्रोसॉफ्ट ने इसे खराब-लिखित आंतरिक उपकरण के माध्यम से चलाया जो [....] के साथ सभी कर्मचारी नामों को प्रतिस्थापित करता है।
दुर्भाग्यवश, टूल वास्तविक स्रोत को भी बदल देता है।

यह वास्तव में काउंटर-उत्पादक है; आप संकलित मेटाडेटा (उदाहरण के लिए, परावर्तक में) देखकर वास्तव में क्या छुपा स्रोत का पता लगा सकते हैं।

आपका विशेष लाइन private bool _sync

+0

अपने आप के बाद एक चर नाम देने का अच्छा कारण ... – Bobson

+2

आपका मतलब है, जैसे ही जॉन फू एमएस में अपना काम शुरू करता है, कोड अपठनीय होगा? ;) – igrimpe

+0

@igrimpe: मुझे विश्वास है कि यह केवल उपयोगकर्ता नाम है। – SLaks

3

होना चाहिए जबकि @SLaks जवाब सबसे अधिक संभावना सही एक है, यह नोट करना है कि इस आईएल स्तर पर एक संभावित वैध पहचानकर्ता, ECMA 335 विभाजन II, धारा 5.3 राज्यों है महत्वपूर्ण है:

[टी] वह आईएलएएसएम वाक्यविन्यास किसी भी पहचानकर्ता के उपयोग की अनुमति देता है जिसे यूनिकोड चरित्र सेट (विभाजन I देखें) का उपयोग करके गठित किया जा सकता है। इसे प्राप्त करने के लिए, एक पहचानकर्ता को एकल उद्धरण चिह्नों के भीतर रखा जाएगा।

निम्नलिखित पूरी तरह से वैध आईएल कि कंसोल पर झूठी बाहर प्रिंट है: जाहिर है

.assembly 'ValidIDTest' 
{ 
} 

    .class public TestClass 
    { 
    .field static public bool '_[...]' 

    .method static void Main() cil managed 
    { 
     .entrypoint 
     ldsfld bool TestClass::'_[...]' 
     call void [mscorlib]System.Console::WriteLine(bool) 
     ret  
    } 
    } 
+0

@ स्लैक का जवाब सही है। यह प्रश्न SO पर कम से कम दो बार आया है और कम से कम एक बार माइक्रोसॉफ्ट कर्मचारी द्वारा टूल तक पहुंच के साथ उत्तर दिया गया था, लेकिन मैं उन्हें एटीएम खोजने के लिए बहुत आलसी हूं। – Brian

संबंधित मुद्दे