الاستخدام الصحيح لواجهة 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 يجمع الـ