Dispose() विधि
- यह विधि
IDisposableइंटरफेस में परिभाषित होती है। - इसे उपयोगकर्ता द्वारा स्पष्ट रूप से कॉल करना पड़ता है।
- जब इसे कॉल किया जाता है, तो यह अनमैनेज्ड संसाधनों को तुरंत मुक्त करने में मदद करता है।
- इसे तब लागू किया जा सकता है जब कोई
close()विधि मौजूद हो। - यह एक
publicविधि के रूप में घोषित होती है। - यह तेज़ होती है और ऑब्जेक्ट को तुरंत डिस्पोज़ कर देती है।
- चूंकि यह तुरंत कार्य करती है, इसलिए यह प्रदर्शन को प्रभावित नहीं करती।
Finalize() विधि
- यह
Objectक्लास में परिभाषित एक विधि है (C# मेंjava.lang.Objectनहीं)। - इसे गार्बेज कलेक्टर द्वारा स्वचालित रूप से कॉल किया जाता है।
- यह ऑब्जेक्ट नष्ट होने से ठीक पहले अनमैनेज्ड संसाधनों को मुक्त करने में मदद करती है।
- इसे अनमैनेज्ड संसाधनों को प्रबंधित करने के लिए लागू किया जाता है।
- यह
protectedहोती है (C# मेंprivateनहीं)। - यह
dispose()की तुलना में धीमी होती है। - चूंकि यह धीमी है, इसलिए यह वेबसाइटों या एप्लिकेशन के प्रदर्शन को प्रभावित कर सकती है।
मुख्य अंतर सारांश
| विशेषता | Dispose() | Finalize() |
|---|---|---|
| आह्वान | मैन्युअल (उपयोगकर्ता द्वारा) | स्वचालित (GC द्वारा) |
| गति | तेज़ | धीमी |
| प्रदर्शन प्रभाव | नहीं | हाँ |
| एक्सेस मॉडिफायर | public | protected |
| इंटरफेस/क्लास | IDisposable इंटरफेस | Object क्लास |
सर्वोत्तम अभ्यास: हमेशा Dispose() पैटर्न का उपयोग करें और using स्टेटमेंट के साथ अनमैनेज्ड संसाधनों को तत्काल मुक्त करें। Finalize() केवल बैकअप के रूप में कार्य करता है।