"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > लूप के लिए C# 5.0 में क्लोजर समस्याग्रस्त क्यों कैप्चर कर रहा है और फोरच लूप्स में ऐसी कोई समस्या नहीं है?

लूप के लिए C# 5.0 में क्लोजर समस्याग्रस्त क्यों कैप्चर कर रहा है और फोरच लूप्स में ऐसी कोई समस्या नहीं है?

2025-04-12 को पोस्ट किया गया
ब्राउज़ करें:269

Why are Captured Closures Problematic in C# 5.0 For Loops but Not Foreach Loops?

]

सवाल:

]

उत्तर:

तार्किक रूप से, लूप के लिए क्लोजर का व्यवहार उचित है। लूप के लिए अपने घटकों (इनिशियलाइज़र, स्थिति, पुनरावृत्ति, और शरीर) में लूप को विघटित करने के बाद, इनिशियलाइज़र केवल एक बार निष्पादित करता है। इसलिए, केवल एक "चर तात्कालिकता" होना तर्कसंगत है।

इसके अलावा, लूप के लिए, प्रत्येक पुनरावृत्ति के लिए चर का प्रारंभिक मान पूर्वनिर्धारित नहीं है। निम्नलिखित उदाहरण पर विचार करें: ] क्रिया क्रिया = () => कंसोल.ड्रिटलाइन (i, j); कार्रवाई(); }

इस लूप में, लूप के दौरान जे का मान बदल सकता है। इस मामले में अपेक्षित व्यवहार क्या है?

] इसलिए, प्रत्येक पुनरावृत्ति में एक अलग रीड-ओनली वैरिएबल घोषित करने के रूप में एक फोरच लूप के बारे में सोचना उचित है, जिसका मूल्य पुनरावृत्ति से लिया जाता है। यह बताता है कि फोरेच लूप में क्लोजर को सही ढंग से क्यों कैप्चर किया जा सकता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3