কম্পিউটার টিউটোরিয়াল

C#-এ dispose() এবং finalize() এর পার্থক্য

এই আর্টিকেলে আমরা C#-এ dispose() এবং finalize() মেথড দুটির পার্থক্য নিয়ে আলোচনা করব।

Dispose

  • এই মেথডটি IDisposable ইন্টারফেসে সংজ্ঞায়িত।

  • ব্যবহারকারীকে এটি সচেতনভাবে আহ্বান করতে হয়।

  • যখন এটি ডাকা হয়, এটি অনম্যানেজড রিসোর্সها (unmanaged resources) মুক্ত করতে সাহায্য করে।

  • যখন close() মেথড থাকে তখন এটি ইমপ্লিমেন্ট করা যায়।

  • এটি পাবলিক মেথড হিসেবে ঘোষিত হয়।

  • এটি দ্রুত কাজ করে এবং অবজেক্টকে তাৎক্ষণিকভাবে ডিসপোজ করে।

  • তাত্ক্ষণিকভাবে কাজ করার কারণে এটি পারফরম্যান্সে কোনো নেতিবাচক প্রভাব ফেলে না।

Finalize

  • এটি Object ক্লাসে সংজ্ঞায়িত একটি মেথড (জাভার java.lang.Object নয়, C#-এ System.Object)।

  • গারবেজ কলেক্টর (Garbage Collector) এটি স্বয়ংক্রিয়ভাবে আহ্বান করে।

  • অবজেক্ট ধ্বংস হওয়ার ঠিক আগে এটি অনম্যানেজড রিসোর্সها মুক্ত করতে সাহায্য করে।

  • অনম্যানেজড রিসোর্স ম্যানেজ করার জন্য এটি ইমপ্লিমেন্ট করা হয়।

  • এটি প্রাইভেট (private) হিসেবে ঘোষিত হয়।

  • dispose() মেথডের তুলনায় এটি ধীর।

  • ধীর গতির কারণে এটি ওয়েবসাইট বা অ্যাপ্লিকেশনের পারফরম্যান্সে প্রভাব ফেলতে পারে।

সারসংক্ষেপ: Dispose() হলো ডিটারминиস্টিক ক্লিন-আপের জন্য, যেখানে Finalize() হলো নন-ডিটারминиস্টিক ফেইল-সেফ। সর্বোত্তম অনুশীলন হলো IDisposable ইমপ্লিমেন্ট করা এবং using ব্লক ব্যবহার করা।

  1. জাভাতে Final, Finally এবং Finalize-এর পার্থক্য

  2. জাভাতে sleep() এবং wait() মেথডের পার্থক্য

  3. Go এবং Java-এর পার্থক্য

  4. পাইথনে মেথড এবং ফাংশনের পার্থক্য