सी # में आप किसी विधि के अंदर एक ब्लॉक बना सकते हैं जो किसी अन्य कथन से जुड़ा नहीं है।सी # में एक अज्ञात unattached ब्लॉक का मूल्य क्या है?
public void TestMethod()
{
{
string x = "test";
string y = x;
{
int z = 42;
int zz = z;
}
}
}
यह कोड संकलित करता है और चलाता है जैसे कि मुख्य विधि के अंदर ब्रेसिज़ नहीं थे। ब्लॉक के अंदर ब्लॉक भी ध्यान दें।
क्या कोई परिदृश्य है जहां यह मूल्यवान होगा? मुझे अभी तक कोई नहीं मिला है, लेकिन अन्य लोगों के निष्कर्षों को सुनने के लिए उत्सुक हूं।
क्या आपने वास्तव में इसे वीएम स्तर पर सत्यापित किया है? अधिकांश उचित कंपाइलर और जीसी संकलन प्रक्रिया के दौरान दो ब्लॉक को एक में पतन कर देंगे, और जीसी वैरिएबल के अंतिम उपयोग के बाद एक मान कर सकते हैं जो इसे संदर्भित करता है। – emk
मैंने कचरा संग्रह सत्यापित नहीं किया है, लेकिन मैंने दायरे को सत्यापित किया है। मुझे पूरा यकीन है कि .NET कचरा कलेक्टर उन चीज़ों को एकत्र करेगा जो गुंजाइश छोड़ चुके हैं/संदर्भित नहीं हैं। –
जीसी लात मार सकता है, लेकिन यह थोड़ी देर के लिए नहीं हो सकता है! दायरे का नुकसान स्वचालित जीसी का मतलब नहीं है। इसके अलावा, इस मामले में, मूल्य प्रकारों के लिए जीसी के लिए कुछ भी नहीं होता। जीसी नहीं, यहां मुख्य उद्देश्य स्कोपिंग है। –