موصى به, 2024

اختيار المحرر

الفرق بين التخلص () والنهائية () في C #

طرق التخلص () ووضع اللمسات الأخيرة () هي أساليب C # التي يتم استدعاءها لتحرير الموارد غير المدارة التي يحتفظ بها كائن. يتم تعريف طريقة التخلص () داخل واجهة قابلة للتعريف بينما يتم تحديد الطريقة النهائية () داخل كائن الفئة. والفرق الرئيسي بين التخلص () والنهائية () هو أن الأسلوب الذي يتم التخلص منه () يجب أن يتم استدعاؤه صراحة من قبل المستخدم ، بينما يتم استدعاء الطريقة النهائية () بواسطة جامع البيانات المهملة ، قبل تدمير الكائن. دعونا ندرس بعض الاختلافات الأخرى بينهما بمساعدة مخطط المقارنة الموضح أدناه.

رسم بياني للمقارنة

أساس للمقارنةتخلص( )وضع اللمسات الأخيرة ()
يعرفيتم تعريف الأسلوب dispose () في واجهة IDisposable للواجهة.تنهي الطريقة () معرف معرف في فئة java.lang.object.
بناء الجملةالفراغ العام Dispose () {
// التخلص من الشفرة هنا
}
final void finalize () {
// رمز اللمسة النهائية هنا
}
التذرعيتم التخلص من () التخلص من قبل المستخدم.يتم استحضار الطريقة () بواسطة جامع البيانات المهملة.
غرضيتم استخدام الأسلوب dispose () لتحرير الموارد غير المُدارة عندما يتم استدعاؤها.يتم استخدام الصيغة النهائية () لتحرير الموارد غير المدارة قبل إتلاف الكائن.
التنفيذيجب تنفيذ الطريقة التي يتم التخلص منها () عند وجود طريقة إغلاق ().يتم تطبيق الصيغة () على الموارد غير المدارة.
محدد الوصوليتم التصريح عن الطريقة dispose () كعامة.يتم تحديد الصيغة النهائية () على أنها خاصة.
عملطريقة التخلص من () أسرع وتتصرف على الفور كائن.تكون الطريقة النهائية أبطأ مقارنة بالتخلص منها
أداءتؤدي الطريقة () () الإجراء الفوري ، وبالتالي لا تؤثر على أداء مواقع الويب.تنتهي الطريقة () كونها أبطأ تؤثر على أداء مواقع الويب.

تعريف التخلص ()

تقوم طريقة التخلص () بالتخلص من الموارد غير المدارة التي يحتفظ بها كائن من الفئة. الموارد غير المُدارة هي الملفات ، اتصالات البيانات ، إلخ. يتم التصريح عن الطريقة dispose () في الواجهة IDisposeable ويتم تنفيذها بواسطة الفئة عن طريق تطبيق الواجهة IDisposable. هذه الطريقة لا تسمى تلقائيا. يجب على المبرمج أن يقوم بتنفيذها يدويًا عندما تقوم بإنشاء فئة مخصصة سيتم استخدامها من قبل الآخرين. يحتوي الأسلوب على بناء الجملة التالي:

 الفراغ العام يتخلص () {{Dispose code here} 

في بناء الجملة أعلاه ، يمكنك ملاحظة أن الطريقة معلنة للجمهور. ذلك لأن هذا الأسلوب معرف في الواجهة IDisposable ويجب أن يتم تنفيذه بواسطة الفئة التي تقوم بتنفيذ هذه الواجهة. لذلك ، لتوفير إمكانية الوصول إلى فئة التنفيذ ، يتم تعريف هذه الطريقة على أنها عامة.

يتم استدعاء هذا الأسلوب يدويًا بواسطة رمز البرنامج حيث يتم تنفيذه للاستدعاء. أداء أساليب سريع ، وتحرر على الفور الموارد التي يحتفظ بها الكائن من فئة.

تعريف اللمسات الأخيرة ()

يتم تحديد طريقة finalize () في فئة الكائن . يتم استخدامه لأنشطة التنظيف. يتم استدعاء هذه الطريقة بواسطة أداة تجميع البيانات المهملة عندما لا يتم استخدام مرجع كائن لفترة طويلة. يحرر جامع البيانات المهملة الموارد المُدارة تلقائيًا ، ولكن إذا كنت تريد تحرير الموارد غير المُدارة مثل مقبض الملفات واتصال البيانات وما إلى ذلك ، فيجب تنفيذ طريقة الإنهاء يدويًا. جامع البيانات المهملة استدعاء الأسلوب finalize () فقط قبل أن يدمر الكائن بالكامل.

صيغة بناء الجملة في الصيغة النهائية ():

 void final finalize () {/ finalization code here} 

في بناء الجملة أعلاه ، يتم تحديد الصيغة النهائية () كمحمية. السبب وراء ذلك ، يجب أن لا يمكن الوصول إلى الطريقة النهائية () من خارج الفئة ، ويجب أن يكون متاحًا فقط لمجمع البيانات المهملة.

تؤثر الصيغة النهائية () على تكلفة الأداء لأنها لا تحرر الذاكرة على الفور. في C # يتم استدعاء طريقة وضع اللمسات الأخيرة تلقائيًا مع destructors.

الاختلافات الرئيسية بين التخلص () والنهائية ()

  1. يتم تعريف الأسلوب dispose () في واجهة IDisposable . من ناحية أخرى ، يتم تحديد الصيغة النهائية () في كائن الفئة.
  2. يجب أن يتم استدعاء الأسلوب الذي يتم التخلص منه () يدويًا داخل التعليمة البرمجية بواسطة مبرمج ، بينما يتم استدعاء الطريقة النهائية تلقائيًا بواسطة أداة تجميع البيانات المهملة قبل أن تدمر الكائن.
  3. يمكن استدعاء الأسلوب الذي يتم التخلص منه في أي وقت ، بينما يتم استدعاء الأسلوب النهائي من قبل أداة تجميع البيانات المهملة عندما يجد أن ذلك الكائن لم يتم الإشارة إليه لمدة طويلة.
  4. يتم تنفيذ الأسلوب dispose () في فئة بعد تنفيذ الواجهة IDisposable. يجب تطبيق الطريقة () على الصيغة النهائية فقط للموارد غير المُدارة لأن الموارد المُدارة يتم تحريرها تلقائيًا بواسطة أداة تجميع البيانات المهملة.
  5. محدد الوصول إلى أسلوب التخلص () هو عام كما هو محدد في واجهة IDisposable وسيتم تنفيذه من قبل الفئة التي تطبق هذه الواجهة ومن ثم يجب أن تكون عامة. من ناحية أخرى ، فإن الطريقة النهائية () لها محدد وصول محمي بحيث لا يمكن الوصول إليها لأي عضو خارج الصف.
  6. تتخلص الطريقة () بسرعة وتحرر الكائن على الفور ومن ثم لا تؤثر على تكلفة الأداء. تكون الطريقة النهائية () أبطأ ولا تحرر الموارد التي يحتفظ بها الكائن على الفور.

استنتاج:

يقترح استخدام الطريقة dispose () على الطريقة التي تنتهي منها الصيغة () لأنها أسرع من اللمسات الأخيرة. أيضا ، يمكن أن يطلق عليه أي وقت ، عند الحاجة.

Top