Avatar ·

الاستخدام الصحيح لواجهة IDisposable في C#: كيفية تجنب تسرب الذاكرة

مرحبًا بالجميع! أنا مطور C# مبتدئ ولا أستطيع فهم واجهة IDisposable. قرأت الوثائق ولكن لا تزال لدي أسئلة. إليك مثال على الكود الخاص بي. أعمل مع الملفات وقواعد البيانات: ```csharp public class FileProcessor { private StreamReader _reader; private SqlConnection _connection; public void ProcessFile(string path) { _reader = new StreamReader(path); _connection = new SqlConnection("..."); // نقرأ الملف ونحفظه في قاعدة البيانات string line; while ((line = _reader.ReadLine()) != null) { // نحفظ في قاعدة البيانات } // أنا لا أغلق _reader و _connection - أليس GC سيفعل ذلك؟ } } ``` أعلم أن StreamReader و SqlConnection يطبقان IDisposable. لكن لدي عدة أسئلة: 1. هل أحتاج إلى تطبيق IDisposable في صفي إذا كنت أستخدم مثل هذه الموارد؟ 2. ماذا سيحدث إذا لم أستدعي Dispose()؟ أليس GC يجمع الـ