मैं इसविधि समाप्त होने के बाद भी थ्रेड स्थानीय चर का उपयोग कैसे कर सकता है?
public void MyMethod()
{
int i = 0;
var thread = new Thread(() =>
{
Thread.Sleep(100);
if (i == 0)
{
Console.WriteLine("Value not changed and is {0}", i);
}
else
{
Console.WriteLine(" Value changed to {0}.", i);
}
});
thread.Start();
i = 1;
}
यहाँ विधि की तरह एक सी # विधि है जो स्थानीय विधि में बनाया चर का उपयोग एक धागा बनाता है कहो। जब तक यह इस चर का उपयोग करता है तब तक विधि समाप्त हो जाती है और इस प्रकार एक स्थानीय चर मैं अस्तित्व में नहीं होना चाहिए। लेकिन कोड बिना किसी परेशानी के चलाता है। विधि समझने के बाद मेरी समझ के अनुसार स्थानीय चर मौजूद नहीं है। मैं इसे प्राप्त करने में सक्षम नहीं हूं।
आईएल में उपयोग की जाने वाली इकाई के प्रकार का वर्णन करने के लिए आप किस शब्द का उपयोग कक्षा क्षेत्रों में नहीं उठाए गए चर को पकड़ने के लिए करते हैं? कुछ जो चर के रूप में लिखा गया है लेकिन एक कंपाइलर-क्लास में आयोजित किया गया है, एक निष्पादन दृष्टिकोण से, एक वर्ग क्षेत्र है। – supercat
@supercat: मैं इसे एक स्थानीय चर कहूंगा। लेकिन मैं * एमएसआईएल * भाषा के बारे में बात करूँगा, सी # भाषा के बारे में नहीं। –
जिज्ञासा से, क्या आप जानते हैं कि सी # को बनाने वाले लोगों को यह माना जाता है कि बंद होने में उपयोग किए जाने वाले चर को घोषित किया जा सकता है? मैं मानता हूं कि बंद हो सकते हैं, लेकिन बंद होने में चर के अंतर्निहित होस्टिंग खतरनाक लगते हैं और कभी-कभी अस्पष्ट अर्थशास्त्र उत्पन्न कर सकते हैं। स्पष्ट रूप से घोषणाओं को घोषित करने से अर्थशास्त्र स्पष्ट हो जाएगा। – supercat