उपयोग (...) कथन {} अंततः {} कोशिश करने के लिए वाक्य रचनात्मक चीनी है।कथन और कोशिश-पकड़() - अंततः पुनरावृत्ति का उपयोग करना?
लेकिन अगर मैं तो एक बयान का उपयोग कर नीचे की तरह है:
using (FileStream fs = File.Open(path))
{
}
अब मैं अपवाद है कि इस फ़ाइल को खोलने का कारण बन सकता पकड़ने के लिए चाहते हैं (और यह काफी अधिक जोखिम कोड में है कि यह की वजह से असफल हो सकता है है पर्यावरण), लेकिन अगर मैं अंदर कोशिश करने की कोशिश करता हूं तो क्या पुनरावृत्ति नहीं होगी? जब कोड आईएल में संकलित हो जाता है, तो मुझे लगता है कि कोड JITted होने पर पुनरावृत्ति हटा दी जाएगी?
हालांकि, मैं एक फाइल खोलने के अपवादों को पकड़ना चाहता हूं (इसलिए मुझे उपयोग कथन के दायरे से बाहर की कोशिश को लपेटना चाहिए), और जो भी मैं ब्लॉक का उपयोग कर अंदर करता हूं उसके अपवाद भी मुझे जोड़ना चाहिए ब्लॉक के अंदर कोशिश करें।
ऐसा लगता है कि मैं सीएलआर शायद अंदर क्या करता हूं इसके लिए बहुत बार दोहरा रहा हूं। क्या सीएलआर कैच क्लोज़ जोड़ता है?
मेरे सहयोगी ने तर्क दिया कि एक उपयोग कथन गन्दा है (लेकिन ऐसा इसलिए था क्योंकि मुझे एक पंक्ति बहुत मुश्किल थी क्योंकि मुझे उन्हें कोडिंग करना मुश्किल था क्योंकि मुझे उन्हें बहुत तेज़ी से बदलने की आवश्यकता थी और कोड के अन्य हिस्सों तक पहुंच नहीं थी आधार)। कहा गया है कि सहकर्मी उपयोग कथन का उपयोग नहीं करता है लेकिन क्या कभी भी उपयोग कथन के बीच कोई अंतराल अंतर है और आखिर में कोशिश करें/कोशिश करें-आखिरकार? मैंने इसका एक मामला देखा जहां डब्ल्यूसीएफ सेवाओं के अंत में और मूल्यों को वापस करने (आखिर में कुछ) का उपयोग करने के बारे में कोई ज्ञात कोने का मामला नहीं है। समाधान एक चेक ब्लॉक का उपयोग करना था। क्या सी # में ऐसा कुछ है?
एक और नोट पर, सभी प्रकार हैं जो अप्रबंधित संसाधनों के आईडीआईएसस्पेल मालिकों को लागू करते हैं? मेरे दोस्त के साथ एक चर्चा ने जवाब देने का जवाब दिया। (मैंने इस मंच के उपयोग खंड में कुछ धागे भी पढ़े हैं, कुछ अच्छे ज्ञान हैं)।
अंत में समर्थन का समर्थन करता है हालांकि? अज्ञात स्कोप ब्लॉक का उपयोग करके, आप कहां उपयोग करने के बारे में पता लगाया? मैं इसके बारे में और जानना चाहता हूं। तो जब मैं एक प्रयोग ब्लॉक में फ़ाइल खोलता हूं (उदाहरण के लिए FileSream.Open()), यह अपवाद बबल हो जाएगा। यदि उपयोग कथन लागू/आखिरकार लागू करता है, तो मुझे पकड़ने के लिए कोशिश/पकड़ में लपेटना होगा। – dotnetdev