अनुशंसित, 2024

संपादक की पसंद

अंतर के बीच अंतर () और अंतिम रूप () C # में

विधियाँ () और अंतिम रूप देती हैं () C # की विधियाँ हैं जो किसी वस्तु द्वारा रखे गए मानव रहित संसाधनों को मुक्त करने के लिए लगाई जाती हैं। डिस्पोज़ () विधि को इंटरफ़ेस आईडीसॉफ़ायर के अंदर परिभाषित किया गया है, जबकि विधि (अंतिम) को क्लास ऑब्जेक्ट के अंदर परिभाषित किया गया है। डिस्पोज़ () और फ़ाइनलीज़ () के बीच मुख्य अंतर यह है कि विधि डिस्पोज़ () को उपयोगकर्ता द्वारा स्पष्ट रूप से लागू किया जाना है, जबकि, विधि को अंतिम रूप () कचरा कलेक्टर द्वारा लागू किया जाता है, ऑब्जेक्ट नष्ट होने से पहले। नीचे दिखाए गए तुलना चार्ट की सहायता से उनके बीच कुछ अन्य अंतरों का अध्ययन करते हैं।

तुलना चार्ट

तुलना के लिए आधारनिपटाना ()अंतिम रूप दें ()
परिभाषितविधि डिस्पोज़ () इंटरफ़ेस आईडीआईसोफ़ायर इंटरफ़ेस में परिभाषित किया गया है।विधि अंतिम () आईडी java.lang.object वर्ग में परिभाषित की गई है।
वाक्य - विन्याससार्वजनिक शून्य निपटान () {
// यहां कोड डिस्पोज करें
}
संरक्षित शून्य अंतिम () {
// यहाँ अंतिमकरण कोड
}
लागूविधि निपटान () उपयोगकर्ता द्वारा लागू किया गया है।विधि अंतिम रूप () कचरा कलेक्टर द्वारा लागू किया जाता है।
उद्देश्यजब भी इसे लागू किया जाता है, तो अप्रबंधित संसाधनों को मुक्त करने के लिए विधि निपटान () का उपयोग किया जाता है।विधि को अंतिम रूप देने () का उपयोग ऑब्जेक्ट के नष्ट होने से पहले अप्रबंधित संसाधनों को मुक्त करने के लिए किया जाता है।
कार्यान्वयनजब भी कोई क़रीब () विधि आती है, तो विधि निपटान () को लागू करना होता है।विधि को अंतिम रूप देना () अप्रबंधित संसाधनों के लिए लागू किया जाना है।
पहुँच निर्दिष्ट करनेवालाविधि निपटान () को सार्वजनिक घोषित किया जाता है।विधि को अंतिम रूप () निजी घोषित किया जाता है।
कार्यविधि का निपटान () तेजी से होता है और तुरंत किसी वस्तु का निपटान करता है।निपटाने की तुलना में विधि अंतिम रूप से धीमी है
प्रदर्शनविधि का निपटान () तात्कालिक कार्रवाई करता है, इसलिए वेबसाइटों के प्रदर्शन को प्रभावित नहीं करता है।विधि अंतिम () धीमी होने से वेबसाइटों के प्रदर्शन पर असर पड़ता है।

निपटान की परिभाषा ()

डिस्पोज़ () विधि अप्रबंधित संसाधनों को जारी करती है जो वर्ग के किसी ऑब्जेक्ट द्वारा आयोजित किए जाते हैं। अनवांटेड संसाधन फ़ाइलें, डेटा कनेक्शन, आदि हैं। विधि निपटान () इंटरफ़ेस IDisposeable में घोषित की गई है और इसे इंटरफ़ेस आईडीआईसोफ़ेबल लागू करके वर्ग द्वारा लागू किया जाता है। इस विधि को स्वचालित रूप से नहीं कहा जाता है। प्रोग्रामर को इसे मैन्युअल रूप से लागू करना होगा जब आप एक कस्टम वर्ग बना रहे हैं जो दूसरों द्वारा उपयोग किया जाएगा। विधि में निम्नलिखित सिंटैक्स है:

 सार्वजनिक शून्य डिस्पोज़ () {// कोड यहाँ डिस्पोज़ करें} 

उपरोक्त सिंटैक्स में, आप देख सकते हैं कि विधि को सार्वजनिक घोषित किया गया है। ऐसा इसलिए है क्योंकि इस पद्धति को इंटरफ़ेस आईडीआईसुपट में परिभाषित किया गया है और इसे उस वर्ग द्वारा लागू किया जाना है जो इस इंटरफ़ेस को लागू करता है। इसलिए, कार्यान्वयन वर्ग तक पहुंच प्रदान करने के लिए, विधि को सार्वजनिक घोषित किया जाता है।

इस विधि को प्रोग्राम के कोड द्वारा मैन्युअल रूप से लागू किया जाता है क्योंकि इसे लागू करने के लिए लागू किया जाता है। विधियों का प्रदर्शन तेज़ है, और यह किसी वर्ग के ऑब्जेक्ट द्वारा आयोजित संसाधनों को तुरंत मुक्त करता है।

अंतिम रूप की परिभाषा ()

ऑब्जेक्ट क्लास में अंतिम रूप () पद्धति को परिभाषित किया गया है। इसका उपयोग सफाई गतिविधियों के लिए किया जाता है। इस विधि को कचरा कलेक्टर द्वारा तब बुलाया जाता है जब किसी वस्तु का संदर्भ लंबे समय तक उपयोग नहीं किया जाता है। कचरा संग्राहक प्रबंधित संसाधनों को स्वचालित रूप से मुक्त कर देता है लेकिन यदि आप फ़ाइल प्रबंधन, डेटा कनेक्शन, आदि जैसे मानव रहित संसाधनों को मुक्त करना चाहते हैं, तो अंतिम विधि को मैन्युअल रूप से लागू करना होगा। कचरा संग्रहकर्ता विधि को अंतिम रूप देता है () इससे पहले कि वह वस्तु को पूरी तरह से नष्ट कर दे।

विधि के सिंटैक्स को अंतिम रूप दें ():

 संरक्षित शून्य अंतिम रूप () {// अंतिमकरण कोड यहाँ} 

ऊपर सिंटैक्स में, विधि अंतिम रूप से () संरक्षित घोषित की गई है। इसके पीछे का कारण है, विधि को अंतिम रूप देना () वर्ग के बाहर से पहुंच योग्य नहीं होना चाहिए, और इसे केवल कचरा संग्राहक तक पहुंचना होगा।

अंतिम रूप () विधि प्रदर्शन की लागत को प्रभावित करती है क्योंकि यह मेमोरी को तुरंत मुक्त नहीं करता है। सी # में अंतिम विधि विध्वंसक के साथ स्वचालित रूप से कहा जाता है।

निपटान और (अंतिम) के बीच मुख्य अंतर ()

  1. विधि डिस्पोज़ () को एक इंटरफ़ेस आईडीआईसोफ़ेक्टिव में परिभाषित किया गया है। दूसरी ओर, क्लास ऑब्जेक्ट में अंतिम रूप दिया गया है।
  2. विधि निपटान () को प्रोग्रामर द्वारा कोड के अंदर मैन्युअल रूप से लागू किया जाना है, जबकि विधि को अंतिम रूप देने से पहले कचरा कलेक्टर द्वारा ऑब्जेक्ट को नष्ट करने से पहले स्वचालित रूप से लागू किया जाता है।
  3. विधि निपटान को कभी भी लागू किया जा सकता है, जबकि अंतिम विधि कचरा कलेक्टर द्वारा लागू की जाती है जब यह पता चलता है कि उस वस्तु को लंबे समय तक संदर्भित नहीं किया गया है।
  4. इंटरफ़ेस आईडीआईसॉफ़री को लागू करने के बाद विधि निपटान () को एक वर्ग में लागू किया जाता है। विधि को अंतिम रूप () केवल अप्रबंधित संसाधनों के लिए लागू किया जाना है क्योंकि प्रबंधित संसाधन स्वचालित रूप से कचरा कलेक्टर द्वारा मुक्त कर दिए जाते हैं।
  5. विधि डिस्पोजल () का एक्सेस स्पेसियर सार्वजनिक है क्योंकि यह इंटरफेस आईडीसोफ़ेक्टिव में परिभाषित किया गया है और इसे इस इंटरफ़ेस को लागू करने वाले वर्ग द्वारा लागू किया जाएगा, इसलिए यह सार्वजनिक होना चाहिए। दूसरी ओर, विधि अंतिम रूप () ने एक्सेस स्पेसियर को संरक्षित किया है ताकि यह कक्षा के बाहर किसी भी सदस्य के लिए सुलभ न हो।
  6. विधि निपटान () तेज है और वस्तु को तुरंत मुक्त करता है इसलिए, यह प्रदर्शन लागत को प्रभावित नहीं करता है। विधि को अंतिम रूप देना () धीमा है और वस्तु द्वारा रखे गए संसाधनों को तुरंत मुक्त नहीं करता है।

निष्कर्ष:

इसे अंतिम रूप देने की तुलना में तेज़ होने की विधि () पर विधि निपटान () का उपयोग करने का सुझाव दिया जाता है। इसके अलावा, इसे जरूरत पड़ने पर किसी भी समय बुलाया जा सकता है।

Top