सी # में, यदि मैं निर्धारित रूप से गैर-प्रबंधित संसाधनों को साफ़ करना चाहता हूं, तो मैं "उपयोग" कीवर्ड का उपयोग कर सकता हूं। लेकिन कई निर्भर वस्तुओं के लिए, यह आगे और आगे घोंसला बनाने से समाप्त होता है:क्या नेस्टेड "उपयोग" की तुलना में एक बेहतर निर्धारिक निपटान पैटर्न है?
using (FileStream fs = new FileStream("c:\file.txt", FileMode.Open))
{
using (BufferedStream bs = new BufferedStream(fs))
{
using (StreamReader sr = new StreamReader(bs))
{
// use sr, and have everything cleaned up when done.
}
}
}
सी ++ में, मैं विनाशकर्ता उपयोग करने के लिए इस तरह यह करने के लिए सक्षम किया जा रहा करने के लिए इस्तेमाल कर रहा हूँ:
{
FileStream fs("c:\file.txt", FileMode.Open);
BufferedStream bs(fs);
StreamReader sr(bs);
// use sr, and have everything cleaned up when done.
}
वहाँ एक है ऐसा करने के लिए सी # में बेहतर तरीका है? या मैं घोंसले के कई स्तरों से अटक गया हूँ?
यह सिर्फ घोंसला जैसा है - प्रत्येक क्रमिक उपयोग को एक लाइन कोड ब्लॉक के रूप में माना जाता है - अगर एक कथन, sans {} के बारे में सोचें। आपने जो कुछ हासिल किया है वह टैब कुंजी को मारने से परहेज कर रहा है। –
मैं ग्रेग हर्लमैन से सहमत हूं, यह एक स्वरूपण चाल है: जैसे, जबकि, आदि, 'उपयोग' एक एकल कथन को नियंत्रित करता है, लेकिन आप आमतौर पर इसे कथन के ब्लॉक के साथ उपयोग करते हैं। –
खैर, हाँ यह एक स्वरूपण चाल है, लेकिन बिंदु यह है कि यह एक सहायक चाल है, और सी # के लिए नए किसी के लिए स्पष्ट नहीं है। – Eclipse