कॉलिंग विधि में using
कथन का उपयोग करें, ऑब्जेक्ट को वापस करने की विधि नहीं। ,
DataSet ds = null;
try
{
// code here
}
finally
{
if(ds != null)
{
ds.Dispose();
ds = null;
}
}
इसलिए, यदि आप एक विधि में एक using
बयान है कि using
बयान में वस्तु वापस जाने के लिए माना जाता है प्रयोग किया जाता है यह होगा:
public void Caller()
{
using(DataSet ds = GetDataSet())
{
// code here
}
}
public DataSet GetDataSet()
{
// don't use a using statement here
return ds;
}
using
बयान यह कर के रूप में ही मूल रूप से है एक विस्थापित वस्तु (यानी बंद धारा, बंद डेटासेट, आदि ...) का अर्थ है जिसका मतलब है कि कुछ आंतरिक वस्तुएं शून्य या बंद हो सकती हैं। दूसरे शब्दों में, सभी आंतरिक संसाधनों को साफ किया जाएगा, जो कि पहले स्थान पर आईडीस्पोजेबल को लागू करने का उद्देश्य है। यदि आपका आवेदन उपलब्ध कुछ आंतरिक संसाधनों पर निर्भर करता है, उदाहरण के लिए स्ट्रीम ऑब्जेक्ट का उपयोग करते समय, यह अपवाद फेंक देगा।
यह भी ध्यान रखें कि सभी finally
ब्लॉक समान नहीं हैं। याद रखें, किसी भी आंतरिक संसाधनों और अप्रबंधित वस्तुओं को साफ करने के लिए पहचान योग्य लागू किया गया था। using
कथन के बाहर उन आंतरिक संसाधनों की आवश्यकता नहीं हो सकती है, इसलिए कभी-कभी using
कथन का उपयोग करते हुए आप ठीक से काम कर सकते हैं लेकिन इसकी अनुशंसा नहीं की जाती है, और निश्चित रूप से सभी वस्तुओं के साथ काम नहीं करेगा। यदि माइक्रोसॉफ्ट ने भविष्य में रिलीज में डेटासेट ऑब्जेक्ट को बदलने का फैसला किया है, तो आपके आवेदन के लिए कुछ महत्वपूर्ण है, तो आपका कामकाजी कोड अचानक काम करना बंद कर देगा।
स्रोत
2012-08-05 11:23:56
यदि आप कोई ऑब्जेक्ट वापस करना चाहते हैं, तो आप इसका निपटान क्यों करना चाहते हैं? –
@Mert - मैं जानना चाहता हूं कि नुकसान क्या है? क्या डेटा में कोई नुकसान है? मैंने सत्यापित किया कि यह ठीक है ... मेरा सवाल है - क्या कोई गैर लाभकारी है कि मुझे याद आ रही है? –
आपने इसे सत्यापित किया? अच्छा लगा। जिस तरह से बहुत कम लोग वास्तव में औपचारिक तरीकों के साथ अपना कोड साबित करते हैं :) – Joey