2010-06-27 7 views
12

यहाँ एक उदाहरण के रूप में एक अर्थहीन विस्तार विधि है:थ्रेडिंग और स्थिर तरीकों

x = 2; 

प्रोसेसर तो संदर्भ स्विच:

public static class MyExtensions 
{ 
    public static int MyExtensionMethod(this MyType e) 
    { 
     int x = 1; 
     x = 2; 

     return x 
    } 
} 

निष्पादन की एक धागा तक पूरा करता है और लाइन सहित कहो और दूसरा धागा एक ही विधि में प्रवेश करता है और रेखा को पूरा करता है:

int x = 1; 

एम मैं कोर यह मानते हुए कि पहले धागे द्वारा बनाए गए और असाइन किए गए वेरिएबल "एक्स" वेरिएबल "एक्स" के लिए एक अलग स्टैक पर हैं और दूसरे द्वारा असाइन किए गए हैं, जिसका अर्थ है कि यह विधि फिर से प्रवेश कर रही है?

उत्तर

14

हां, प्रत्येक धागे का अपना अलग स्थानीय चर हो जाता है। एक साथ कई धागे द्वारा बुलाए जाने पर भी यह फ़ंक्शन 2 वापस आ जाएगा।

2

हां, यह एक सही मूल्यांकन है। x एक विधि-स्थानीय चर है, और MyExtensionMethod के इनवोकेशन के बीच साझा नहीं किया जाएगा।

0

काफी सरल, हां। एक स्थैतिक विधि का मतलब केवल यह है कि किसी वस्तु के बिना विधि को बुलाया जा सकता है। विधि के भीतर स्थानीय चर अभी भी स्थानीय हैं।