using
تصريح using وجملة using using
using له استخدامان مختلفان: توجيه using لاستيراد namespace في أعلى الملف، وجملة/تصريح using للتخلّص التلقائي من كائن يطبّق IDisposable.
التوجيه `using System;` في أعلى الملف يسمح باستخدام أنواع الـ namespace بلا كتابة اسمه كاملًا كل مرة.
جملة using مختلفة تمامًا: تضمن استدعاء Dispose() على كائن (ملف، اتصال شبكة، قاعدة بيانات) تلقائيًا عند الخروج من الكتلة، حتى لو حدث استثناء. منذ C# 8 توجد صيغة أقصر بلا أقواس تسمّى using declaration — تتخلّص من الكائن عند نهاية النطاق المحيط.
الصياغة
using Namespace; // توجيه استيراد
using (var x = ...) { ... } // جملة using
using var x = ...; // تصريح using (C# 8+)📄 مثال
using System.IO;
// جملة using — تتخلّص من الملف عند نهاية القوسين
using (StreamReader reader = new StreamReader("data.txt"))
{
Console.WriteLine(reader.ReadLine());
}
// تصريح using — تتخلّص عند نهاية الدالة
void ReadFile()
{
using var reader = new StreamReader("data.txt");
Console.WriteLine(reader.ReadLine());
}أهم النقاط
| العنصر | الوظيفة |
|---|---|
| using directive | استيراد أنواع namespace في أعلى الملف |
| using statement | using (...) { } — تخلّص محدّد بنطاق الأقواس |
| using declaration | using var x = ...; — تخلّص عند نهاية النطاق المحيط (C# 8+) |
💡 نصائح عملية
- استخدم using مع أي كائن يطبّق IDisposable (ملفات، اتصالات، streams) بدل استدعاء Dispose() يدويًا
⚠️ أخطاء شائعة
- فتح ملف أو اتصال بلا using ونسيان Dispose() — يسرّب موارد النظام
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار CSHARP الكامل بالعربي.