Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C#

C# में अंतिम रूप देने और निपटाने में क्या अंतर है?

अंतिम रूप दें

संग्रह के लिए योग्य वस्तु को पुनः प्राप्त करने से पहले कचरा कलेक्टर द्वारा अंतिम रूप () को बुलाया जाता है। कचरा संग्रहकर्ता गैर-संदर्भित वस्तु के लिए स्मृति को हटाने की जिम्मेदारी लेगा। स्मृति में उस वस्तु के मान्य संदर्भ नहीं होने के बाद कचरा संग्रहकर्ता इस विधि को किसी बिंदु पर कॉल करता है।

ढांचा इस बात की गारंटी नहीं देता है कि ऐसा कब होगा, हम कचरा संग्रह के लिए बाध्य कर सकते हैं लेकिन यह एक कार्यक्रम के प्रदर्शन को नुकसान पहुंचाएगा। फ़ाइनलाइज़ () ऑब्जेक्ट क्लास से संबंधित है और इसे रनटाइम द्वारा बुलाया जाएगा।

उदाहरण

using System;
namespace DemoApplication{
   public class Demo{
      ~Demo(){
         Console.WriteLine("Finalize called");
      }
   }
}

निपटान

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

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

उदाहरण

using System;
namespace DemoApplication{
   public class Demo : IDisposable{
      private bool disposed = false;
      public void Dispose(){
         Dispose(true);
         GC.SuppressFinalize(this);
      }
      protected virtual void Dispose(bool disposing){
         if (!disposed){
            if (disposing){
               //clean up managed objects
            }
            //clean up unmanaged objects
            disposed = true;
         }
      }
   }
}

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


  1. DirectX 11 और DirectX 12 में क्या अंतर है?

    DirectX, एपीआई या एप्लिकेशन प्रोग्रामिंग इंटरफेस का एक संग्रह है, जिसका उपयोग सॉफ्टवेयर द्वारा मल्टीमीडिया सामग्री को प्रस्तुत करने और ग्राफिकल हार्डवेयर के साथ संचार करने के लिए किया जाता है। DirectX का प्रमुख घटक API, Direct3D, सॉफ्टवेयर और ग्राफिक्स हार्डवेयर के बीच संचार को संभालता है। चूंकि सभी

  1. सी # में स्ट्रिंग और स्ट्रिंग के बीच क्या अंतर है?

    String System.String के लिए खड़ा है जबकि string System.String के लिए C# में एक उपनाम है - उदाहरण के लिए string str = "Welcome!"; यह आवश्यक नहीं है, लेकिन आम तौर पर जब आप कक्षाओं के साथ काम करते हैं तो स्ट्रिंग का उपयोग किया जाता है। string str = String.Format("Welcome! {0}!", u

  1. सी # में सूची और सरणी के बीच क्या अंतर है?

    एक सरणी एक ही प्रकार के तत्वों के एक निश्चित आकार के अनुक्रमिक संग्रह को संग्रहीत करती है, जबकि सूची एक सामान्य संग्रह है। सूची को परिभाषित करने के लिए - List<string7gt; myList = new List<string>(); सूची में तत्वों को सेट करने के लिए, आपको जोड़ें विधि का उपयोग करने की आवश्यकता है - myList