IDisposable وعبارة using
طبّق IDisposable، واستخدم عبارة using للتنظيف الحتمي، وقارنها بـ try/finally اليدوية. يخص C# 6 فقط.
IDisposable وعبارة using درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 3 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.
لماذا IDisposable وusing
الهدف: تحرير الموارد بشكل حتمي.
- تطبيق IDisposable
- استخدام عبارة using (C# 6)
- المقارنة مع try/finally
- الحفاظ على صغر عمليات التنظيف وأمانها
تطبيق IDisposable
طبّق IDisposable.Dispose لتحرير الموارد (الملفات والمقابس والمقابض). واجعله آمنًا عند تكرار استدعائه.
using System;
// Simple disposable that tracks whether it was cleaned up
public sealed class FakeConnection : IDisposable
{
public bool IsOpen { get; private set; }
public FakeConnection()
{
IsOpen = true;
Console.WriteLine("Open");
}
public void Dispose()
{
if (IsOpen)
{
IsOpen = false;
Console.WriteLine("Close");
}
}
}
public class Program
{
public static void Main(string[] args)
{
FakeConnection c = new FakeConnection();
c.Dispose(); // manual cleanup
}
}
نمط try/finally
يضمن try/finally التنظيف، لكنه مطوّل ويسهل نسيانه. وتُعد عبارة using اختصارًا له.
using System;
public sealed class FakeConnection : IDisposable
{
public void Dispose() { Console.WriteLine("Dispose called"); }
public void Send(string msg) { Console.WriteLine("Send: " + msg); }
}
public class Program
{
public static void Main(string[] args)
{
// Manual try/finally
FakeConnection a = null;
try
{
a = new FakeConnection();
a.Send("A");
throw new Exception("boom");
}
finally
{
if (a != null) a.Dispose(); // runs even on exception
}
// unreachable due to thrown exception in this demo
}
}
عرض توضيحي لعبارة using
تغلّف عبارة using بنية try/finally مخفية؛ ويُستدعى Dispose عند انتهاء الكتلة.
using System;
public sealed class FakeConnection : IDisposable
{
public void Dispose() { Console.WriteLine("Dispose called"); }
public void Work() { Console.WriteLine("Working"); }
}
public class Program
{
public static void Main(string[] args)
{
try
{
using (FakeConnection c = new FakeConnection())
{
c.Work();
throw new InvalidOperationException("oops");
} // Dispose runs here automatically
}
catch (Exception)
{
Console.WriteLine("Handled");
}
}
}
الإدخال والإخراج باستخدام using
تطبّق معظم أنواع I/O الواجهة IDisposable. استخدم using لإغلاق المقابض سريعًا.
using System;
using System.IO;
public class Program
{
public static void Main(string[] args)
{
// Create a small temp file then read it
string path = "demo.txt";
File.WriteAllText(path, "hello");
using (StreamReader r = new StreamReader(path))
{
string text = r.ReadToEnd();
Console.WriteLine(text);
} // r.Dispose() closes the file handle
}
}
نصائح using ومحاذيره
نصائح:
- فضّل using على استدعاءات Dispose اليدوية.
- اجعل Dispose صغيرًا وآمنًا (ومن الأفضل ألا يلقي استثناءات).
- لا تستخدم الكائنات بعد التخلص منها.
- عند التعامل مع موارد متعددة، ضمّن كتل using للتحكم في الترتيب.
ضمان عبارة using
مراجعة
مراجعة: طبّق IDisposable للموارد، وغلّف استخدامها داخل كتلة using لضمان التنظيف عبر بنية try/finally مخفية في C# 6.
الأسئلة الشائعة
هل درس «IDisposable وعبارة using» مجاني؟
نعم — نص درس «IDisposable وعبارة using» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.
ماذا ستتعلم في «IDisposable وعبارة using»؟
طبّق IDisposable، واستخدم عبارة using للتنظيف الحتمي، وقارنها بـ try/finally اليدوية. يخص C# 6 فقط. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 3.
كم من الوقت يستغرق درس «IDisposable وعبارة using»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- try/catch/finally وthrow new مقابل إعادة الرمي
- الاستثناءات المخصصة وتصميم الأخطاء
- IDisposable وعبارة using