আমি কিছু কোড দেখছি এবং এটিতে এই বক্তব্য রয়েছে:
~ConnectionManager()
{
Dispose(false);
}
ক্লাসটি IDisposable
ইন্টারফেস প্রয়োগ করে , তবে আমি জানি না যে এটি টিল্ড (~) এর জন্য ব্যবহৃত হয় part
আমি কিছু কোড দেখছি এবং এটিতে এই বক্তব্য রয়েছে:
~ConnectionManager()
{
Dispose(false);
}
ক্লাসটি IDisposable
ইন্টারফেস প্রয়োগ করে , তবে আমি জানি না যে এটি টিল্ড (~) এর জন্য ব্যবহৃত হয় part
উত্তর:
the সর্বনাশকারী
পাকা করা
সি # তে, ফাইনালাইজ পদ্ধতিটি স্ট্যান্ডার্ড সি ++ ডিস্ট্রাক্টর যে কাজগুলি করে তা সম্পাদন করে। সি # তে আপনি এটি চূড়ান্তকরণের নাম রাখেন না - আপনি শ্রেণীর নামের আগে টিলড (~) চিহ্ন স্থাপনের সি ++ ডিস্ট্রাক্টর সিনট্যাক্স ব্যবহার করেন।
মীমাংসা করা
একটি Close()
বা। তে বস্তুর নিষ্পত্তি করা ভালDispose()
শ্রেণীর ব্যবহারকারীর দ্বারা স্পষ্ট করে বলা যেতে পারে এমন পদ্ধতিতে । ফাইনালাইজ (ডিসস্ট্রাক্টর) কে জিসি ডেকে আনে।
IDisposable ইন্টারফেস বিশ্বের বলে যে আপনার বর্গ সম্পদ বিন্যস্ত হতে হবে যে সম্মুখের দিকে ঝুলিতে এবং ব্যবহারকারীদের তা মুক্তি একটি উপায় প্রদান করে। আপনি যদি আপনার ক্লাসে কোনও চূড়ান্তকরণকারী বাস্তবায়ন করতে চান তবে আপনার নিষ্পত্তি পদ্ধতির পদ্ধতিটি আপনার উদাহরণের চূড়ান্তকরণ দমন করা হয়েছে তা নিশ্চিত করার জন্য ব্যবহার করা উচিতGC.SuppressFinalize()
।
কী ব্যবহার করবেন?
কোনও ডেস্ট্রাক্টরকে স্পষ্টভাবে কল করা আইনী নয়। আপনার ধ্বংসকারীকে আবর্জনা সংগ্রহকারী কল করবে। আপনি যদি মূল্যবান পরিচালনা না করা রিসোর্সগুলি (যেমন ফাইল হ্যান্ডলগুলি) হ্যান্ডেল করেন যা আপনি যত তাড়াতাড়ি বন্ধ করতে এবং নিষ্পত্তি করতে চান, আপনার আইডিসপোজযোগ্য ইন্টারফেসটি প্রয়োগ করা উচিত।
Finalize
পদ্ধতি যাও recursively উত্তরাধিকার চেন সমস্ত উদাহরণ জন্য বলা হয়, থেকে অন্তত ডিরাইভড সবচেয়ে ডিরাইভড" । লক্ষ্য করুন যে না একই আচরণ আপনি, যদিও উত্তরাধিকারসূত্রে destructors থেকে পেতে চাই।
এটি চূড়ান্তকরণকারী । সত্যি কথা বলতে, আপনার খুব কমই একটি ফাইনালাইজার লিখতে হবে। আপনার সত্যিই কেবল একটি লিখতে হবে যদি:
IntPtr
) এবং আপনি ব্যবহার করতে পারবেন নাSafeHandle
এটি যা এটি আরও সহজ করেIDisposable
একটি ক্লাসে প্রয়োগ করছেন যা সিল করা হয়নি। (আমার অগ্রাধিকার হ'ল ক্লাসগুলি উত্তরাধিকারের জন্য নকশাকৃত না করে সিল করা)) এই জাতীয় ক্ষেত্রে চূড়ান্তরক্ষক হ'ল ক্যানোনিকাল ডিসপোজ প্যাটার্নের অংশ।এটি শ্রেণীর জন্য ডেস্ট্রাক্টর নির্দেশ করতে ব্যবহৃত হয়।
try/finally
ব্লক অন্তর্ভুক্ত থাকে যা নিশ্চিত করে যে পিতামাত Finalize
পদ্ধতিটি কল হয়। বেশিরভাগ জিনিস যা ধ্বংসকারীদের পক্ষে সত্য তা ফাইনালাইজারদের ক্ষেত্রে সত্য এবং বিপরীত হয় তবে শব্দগুলির অর্থ কিছুটা আলাদা জিনিস mean
সি ++ হিসাবে একই, এটি ধ্বংসকারী; তবে সি # তে আপনি এটিকে স্পষ্টতাই বলছেন না, যখন বস্তুটি সংগ্রহ করা হবে তখনই এটি চাওয়া হয়।
দেখুন Destructors (গ গাইড প্রোগ্রামিং #) । তবে সচেতন থাকুন যে, সি ++ এর বিপরীতে, ডেস্ট্রাক্টর বলা হয় তখন প্রোগ্রামারটির কোনও নিয়ন্ত্রণ থাকে না কারণ এটি আবর্জনা সংগ্রহকারী দ্বারা নির্ধারিত হয়।
। সাধারণত একটি ডিকনস্ট্রাক্টর প্রতিনিধিত্ব করে। যা কোনও বস্তুর মৃত্যুর আগে চালানো হয়।