एक अंतिम आभासी विधि और मूल निपटान विधि के "सीलिंग" का परिचय पूर्ण आधार है, जिसमें सभी आधार शामिल हैं।
जब तक आप अप्रबंधित संसाधनों पर प्रत्यक्ष हैंडल (almostnever होना चाहिए जो) यदि आप एक finalizer की आवश्यकता नहीं है।
यदि आप अपनी कक्षा को सील करते हैं (और जहां भी संभव हो सीलिंग कक्षाओं पर मेरे विचार शायद अब तक ज्ञात हैं - design for inheritance or prohibit it) वर्चुअल विधि को पेश करने में कोई बात नहीं है।
मुझे याद नहीं आया कि मैंने आखिरी बार IDisposable
को "जटिल" तरीके से लागू किया था, जो इसे सबसे स्पष्ट तरीके से बना रहा था, उदाहरण के लिएनोट करने के लिए
public void Dispose()
{
somethingElse.Dispose();
}
एक बात यह है कि यदि आप वास्तव में मजबूत कोड के लिए जा रहे हैं, तो आप यकीन है कि आप कुछ भी करने को तुम्हारे जाने के बाद निपटारा किया गया है कोशिश मत करो बनाना चाहिए, और जहां उचित ObjectDisposedException
फेंक है । कक्षा पुस्तकालयों के लिए यह अच्छी सलाह है जिसका उपयोग पूरी दुनिया में डेवलपर्स द्वारा किया जाएगा, लेकिन यह बहुत कम काम के लिए बहुत काम है यदि यह सिर्फ आपके स्वयं के कार्यक्षेत्र में उपयोग की जाने वाली कक्षा होगी।
स्रोत
2009-02-25 06:33:10
मेरी कक्षा में मेरे पास केवल अप्रबंधित संसाधन हैं जिन्हें सफाई की आवश्यकता है और मैं स्थाई आभासी शून्य निपटान (बूल डिस्पोजेक्ट) के साथ आईडीस्पोजेबल लागू कर रहा हूं क्योंकि स्थिर विश्लेषण इसे करने के लिए मजबूर करता है। मेरे मामले में "निपटान" पैरामीटर का कोई उपयोग नहीं है क्योंकि मैं फाइनलाइज़र और एक ही काम करने का निपटान करना चाहता हूं। – AksharRoop