#️⃣ مرجع C# بالعربي
كل كلمة مفتاحية ونوع ودالة قياسية في C# بالعربي: ماذا تفعل، صياغتها، مثال يوضّحها، وأشهر الأخطاء — لغة مُترجَمة فلا يوجد تشغيل حي في المتصفح. حاليًا 23 عنصر — والقائمة تكبر.
أساسيات اللغة
var
الاستنتاج التلقائي للنوع (var)
var تجعل المترجم يستنتج نوع المتغيّر المحلّي من قيمته الابتدائية بدل كتابة النوع صراحة.
nameof
تعبير nameof
nameof يُرجع اسم متغيّر أو نوع أو عضو كنص، محسوبًا وقت الترجمة بدل كتابته يدويًا كسلسلة حرفية.
using
تصريح using وجملة using
using له استخدامان مختلفان: توجيه using لاستيراد namespace في أعلى الملف، وجملة/تصريح using للتخلّص التلقائي من كائن يطبّق IDisposable.
التحكّم بالتدفق
switch (تعبير)
تعبير switch
تعبير switch يحسب قيمة واحدة عبر مطابقة أنماط — بديل أقصر لجملة switch التقليدية عندما تريد قيمة لا تنفيذ أوامر.
?.
العامل الشرطي الفارغ (?.)
?. يصل لعضو الكائن فقط إن لم يكن null، ويُرجع null تلقائيًا بدل رمي NullReferenceException.
?? و ??=
عاملا الدمج الفارغ (?? و ??=)
?? يُرجع القيمة اليسرى إن لم تكن null وإلا يقيّم اليمنى، و ??= يسند القيمة فقط إذا كان المتغيّر null حاليًا.
معالجة الاستثناءات
try / catch / finally
كتلة try/catch/finally
try تحيط بالكود القابل للفشل، catch تلتقط نوعًا محدّدًا من الاستثناءات وتتعامل معه، وfinally تُنفَّذ دائمًا لتنظيف الموارد.
ArgumentNullException.ThrowIfNull
التحقق السريع من null بـ ThrowIfNull
دالة مساعدة ثابتة (منذ .NET 6) ترمي ArgumentNullException تلقائيًا إن كانت الوسيطة null، مع اكتشاف اسمها بلا كتابته يدويًا.
البرمجة الكائنية
record
النوع القياسي record
record معدِّل يُضاف لـ class أو struct يمنحك مساواة قيمة وToString جاهزًا ونسخًا غير مدمّر تلقائيًا — مثالي لأنواع تخزّن بيانات بشكل أساسي.
struct
الهيكل struct
struct نوع قيمي: يُنسخ بالكامل عند التمرير أو الإسناد بدل مشاركة نفس المرجع كما في class.
enum
التعداد enum
enum يعرّف مجموعة ثابتة من القيم المسمّاة مدعومة برقم صحيح، بدل استخدام أرقام سحرية غير مفهومة في الكود.
المجموعات (Collections)
الميزات الحديثة (C# 12)
Primary Constructor
المُنشئ الأساسي (Primary Constructor)
منذ C# 12، يمكن كتابة مُنشئ مباشرة بجانب اسم أي class أو struct، لا الـ record فقط، ومعاملاته متاحة في كل جسم الصنف.
[ ... ] Collection Expression
تعبيرات المجموعات (Collection Expressions)
صياغة موحّدة بالأقواس المربّعة لإنشاء مصفوفة أو List أو Span أو أي نوع مجموعة آخر، مع عنصر منتشر (..) لدمج مجموعات موجودة.
الميزات الحديثة (C# 14 / .NET 10)
field
الكلمة المفتاحية field
منذ C# 14، تشير field إلى الحقل الاحتياطي الذي يولّده المترجم تلقائيًا لأي خاصية، فلا حاجة لتعريف حقل خاص يدويًا فقط لإضافة منطق بسيط في get أو set.
extension
أعضاء التوسيع (Extension Members)
صياغة extension الجديدة في C# 14 تسمح بتعريف خصائص توسيع، لا دوال توسيع فقط، مجمّعة في كتلة واحدة لنوع معيّن.
?.=
الإسناد الشرطي الفارغ (?.=)
منذ C# 14، يمكن استخدام ?. و ?[] على يسار عملية إسناد، فيُنفَّذ الإسناد فقط إذا لم يكن الكائن null، دون فحص if منفصل.
تحديثات اللغة (C# 10–13)
""" """
النصوص الحرفية الخام (Raw String Literals)
منذ C# 11، تسمح علامات الاقتباس الثلاثية بكتابة نص متعدّد الأسطر يحتوي علامات اقتباس أو شرطات مائلة عكسية دون أي رمز تهريب escape.
required
الأعضاء المطلوبة (required)
منذ C# 11، يفرض المُعدِّل required على المستدعي تعيين قيمة للخاصية عبر مُهيِّئ كائن، وإلا يرفض المترجم الترجمة.
global using
توجيه global using
منذ C# 10، توجيه global using يستورد namespace لكل ملفات المشروع دفعة واحدة، بدل تكرار using في أول كل ملف.
namespace X;
الـ namespace محدود النطاق بالملف (File-Scoped)
منذ C# 10، كتابة namespace X; بلا أقواس تجعل كل أنواع الملف داخل ذلك الـ namespace، فيقلّ مستوى واحد من المسافة البادئة في كل الملف.
params (مجموعات)
params مع أنواع المجموعات
منذ C# 13، لم يعد params مقتصرًا على المصفوفات؛ يمكن استخدامه مع Span وReadOnlySpan وأي نوع مجموعة يدعم IEnumerable مع دالة Add.
System.Threading.Lock
نوع القفل الجديد (Lock)
منذ .NET 9 / C# 13، نوع System.Threading.Lock الجديد يوفّر تزامنًا (synchronization) أسرع من Monitor التقليدي، ويتعرّف عليه المترجم تلقائيًا داخل جملة lock بلا تغيير في الصياغة.
🎓 تريد التعلم بالترتيب بدل المرجع السريع؟ ابدأ من مسار CSHARP الكامل بالعربي.