هل من الممكن فرض استخدام بيان استخدام في C #

StackOverflow https://stackoverflow.com/questions/751016

  •  09-09-2019
  •  | 
  •  

سؤال

أود حقا أن أكون قادرا على تزيين صفي بسمة من نوع فرز من شأنه أن يفرض استخدام بيان باستخدام بحيث يتم التخلص من الفئة دائما بأمان وتجنب تسرب الذاكرة. أي شخص يعرف مثل هذه التقنية؟

هل كانت مفيدة؟

المحلول

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

public static void WorkWithFile(string filename, Action<FileStream> action)
{
    using (FileStream stream = File.OpenRead(filename))
    {
        action(stream);
    }
}

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

تحد هذه التقنية بشدة ما يمكنك القيام به مع جسمك، بالطبع - ولكن في بعض الحالات قد يكون مفيدا.

نصائح أخرى

يمكنك استخدام fxcop. لفرض هذه القاعدة. رؤية ويكيبيديا ل لمحة سريعة.

إذا كنت ترغب في التأكد من أن كائنك يتم التخلص منه دائما، فاستخدم نهضها

ولكن قبل أن تفعل ذلك، قم بقراءة المخلقة والتحضن، وأن تكون واعيا بحقيقة أنك لا تحتاجها عادة ما لم يفعل صفك شيئا مثل إدارة عمر مورد غير مدار.

مع نهادة سيتم استصلاح كائنك "في النهاية" سواء ملفوفة في استخدام أم لا. البيان المستخدم، الذي هو راحة للهيبة، يسمح بتنظيف الحماية المحتملة. التحذير الوحيد هو هذا الكائن مع النهائي أكثر تكلفة للتنظيف والتعامل بشكل عام في الذاكرة لفترة أطول بينما ينتظرون الانتهاء.

رجع متى أحتاج إلى تنفيذ نهادة أو ناهض؟أوTechnorabble: استخدام التخلص، النهضة النهائية ومهارة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top