Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ورقة C# المرجعية

آخر تحديث

Hello World وبنية البرنامج

العبارات عالية المستوى (منذ .NET 6) تتيح لك تخطّي الصنف النمطي.

العنصرالكود
برنامج عالي المستوىConsole.WriteLine("Hello, World!");
استيراد مساحة أسماءusing System;
نقطة الدخول الكلاسيكيةstatic void Main(string[] args) { ... }
طباعة سطرConsole.WriteLine("text");
قراءة سطرstring s = Console.ReadLine();
استيفاء السلاسل النصيةConsole.WriteLine($"Hi {name}");
التعليقات// line و /* block */

أنواع البيانات

النوعالوصف
intعدد صحيح بإشارة 32-بت
longعدد صحيح بإشارة 64-بت
double / floatأعداد عشرية (نقطة عائمة)
decimalعدد عشري عالي الدقة (الأموال)
booltrue أو false
charحرف Unicode واحد
stringنص غير قابل للتغيير
varيستنتج المترجم النوع
int?نوع قيمة قابل لأن يكون null

المتغيرات

العمليةالصياغة
التعريف والتهيئةint x = 5;
استنتاج النوعvar name = "Ada";
ثابتconst double Pi = 3.14159;
حقل للقراءة فقطreadonly int id;
مرجع قابل لأن يكون nullstring? maybe = null;
دمج nullvar y = maybe ?? "default";
شرطي على nullint? len = text?.Length;

التحكم في التدفق

العبارةالصياغة
If / elseif (x > 0) { ... } else { ... }
عبارة switchswitch (n) { case 1: ...; break; default: ...; }
تعبير switchvar s = n switch { 1 => "one", _ => "other" };
حلقة whilewhile (i < n) { ... }
حلقة do-whiledo { ... } while (i < n);
حلقة forfor (int i = 0; i < n; i++) { ... }
حلقة foreachforeach (var item in list) { ... }
Break / continuebreak; تخرج من حلقة، و continue; تتخطّى إلى التكرار التالي

الدوال

العمليةالصياغة
تعريف دالةint Add(int a, int b) { return a + b; }
بجسم تعبيريint Add(int a, int b) => a + b;
دون قيمة إرجاعvoid Greet() { ... }
معامل اختياريint Pow(int b, int e = 2) { ... }
وسائط مسمّاةPow(b: 2, e: 3);
معامل outbool TryParse(string s, out int n) { ... }
دالة ساكنةstatic int Square(int x) => x * x;
تعبير lambdaFunc<int, int> f = x => x * 2;

الأصناف والبرمجة الكائنية (OOP)

العمليةالصياغة
تعريف صنفclass Dog { ... }
خاصية تلقائيةpublic string Name { get; set; }
خاصية للقراءة فقطpublic int Id { get; }
باني (constructor)public Dog(string name) { Name = name; }
إنشاء كائنvar d = new Dog("Rex");
الوراثةclass Puppy : Dog { ... }
واجهةinterface IRunnable { void Run(); }
تجاوز دالةpublic override void Speak() { ... }
سجلّ (غير قابل للتغيير)record Point(int X, int Y);

المجموعات

مجموعات عامة من System.Collections.Generic.

النوعالاستخدام والمثال
List<T>مصفوفة ديناميكية: list.Add(1); list.Count;
Dictionary<K, V>مفتاح-قيمة: dict["a"] = 1; dict.ContainsKey("a");
HashSet<T>قيم فريدة: set.Add(5); set.Contains(5);
Queue<T>FIFO: q.Enqueue(x); q.Dequeue();
Stack<T>LIFO: s.Push(x); s.Pop();
مصفوفةint[] nums = { 1, 2, 3 };
مهيّئ مجموعةvar l = new List<int> { 1, 2, 3 };
التكرار على قاموسforeach (var kv in dict) { kv.Key; kv.Value; }

LINQ

الاستعلام عن المجموعات بطلاقة؛ من System.Linq.

العمليةالصياغة
التصفيةnums.Where(n => n > 0)
الإسقاط / التحويلnums.Select(n => n * 2)
الترتيبnums.OrderBy(n => n) / OrderByDescending(...)
أول مطابقةnums.First(n => n > 5) / FirstOrDefault(...)
Any / allnums.Any(n => n < 0) / nums.All(n => n > 0)
عدّ المطابقاتnums.Count(n => n > 0)
التجميع الكلّيnums.Sum(), nums.Max(), nums.Average()
التجميع حسبitems.GroupBy(i => i.Category)
التحقيق (Materialize).ToList() / .ToArray()

الأنماط الشائعة (الخصائص، async)

النمطالصياغة
دالة asyncasync Task<int> GetAsync() { ... }
انتظار مهمةvar result = await GetAsync();
Try / catchtry { ... } catch (Exception e) { ... }
Finallyfinally { ... } تعمل دائمًا
Using (التخلّص)using var file = File.OpenRead(path);
تنسيق السلاسل النصية$"Total: {amount:C}"
صنف عامclass Box<T> { public T Value; }
مطابقة النمطif (obj is Dog d) { d.Bark(); }

صياغة C# والمجموعات واستعلامات LINQ التي تستخدمها أكثر من غيرها، على صفحة واحدة. ورقة C# المرجعية هذه هي مرجع سريع لكتابة C# - أنواع البيانات، والتحكم في التدفق، والأصناف، ومجموعات List/Dictionary، و LINQ، وأنماط الخصائص و async التي تميّز كود .NET الاصطلاحي.

كل ما هنا هو C# قياسية على .NET ويعمل بأداة dotnet السطرية. انسخ ما تحتاجه، أو جرّب أيّ مقطع برمجي مباشرة في playground الخاص بـ C# - دون الحاجة إلى تثبيت أي SDK.

الأسئلة الشائعة حول ورقة C# المرجعية

هل ورقة C# المرجعية هذه مجانية؟
نعم. ورقة C# المرجعية هذه مجانية تمامًا، دون الحاجة إلى التسجيل. أضِفها إلى المفضلة وارجع إليها متى احتجت إلى البحث عن صياغة أو مجموعة أو دالة LINQ.
ما الفرق بين أنواع القيمة وأنواع المرجع في C#؟
تحمل أنواع القيمة (int و double و bool و struct و enum) بياناتها مباشرةً وتُنسخ عند الإسناد أو التمرير إلى دالة - وتغيير النسخة لا يؤثر في الأصل. أمّا أنواع المرجع (class و string والمصفوفات و List<T>) فتحمل مرجعًا إلى بيانات على الكومة، لذا يمكن لمتغيرين أن يشيرا إلى الكائن نفسه ويكون التغيير عبر أحدهما مرئيًا عبر الآخر. و string نوع مرجع لكنه يتصرّف كأنه غير قابل للتغيير.
ما هو LINQ ومتى ينبغي أن أستخدمه؟
LINQ (الاستعلام المدمج باللغة) هو مجموعة من الدوال مثل Where و Select و OrderBy تتيح لك تصفية المجموعات وتحويلها وتجميعها بمناداة مقروءة وقابلة للتسلسل بدلًا من الحلقات اليدوية. استخدمه كلما كنت ستكتب حلقة لبناء قائمة مصفّاة أو مُسقَطة - فهو موجز ويُقيَّم بكسل حتى تستدعي ToList() أو تتكرّر عليه.
هل يمكنني التدرّب على C# عبر الإنترنت؟
نعم. افتح playground الخاص بـ C# لتشغيل أيّ مقطع برمجي من هذه الورقة المرجعية في متصفحك - دون الحاجة إلى تثبيت أي SDK. وعندما ترغب في تعلّم منظّم، تأخذك دورة C# التفاعلية المجانية من Coddy من المتغيرات والحلقات إلى الأصناف والمجموعات و LINQ خطوة بخطوة.
هل هذه الورقة المرجعية مناسبة للمبتدئين؟
نعم. إنها مرتّبة من اللبنات الأكثر شيوعًا (الأنواع والتحكم في التدفق والدوال) وصولًا إلى المتقدمة (LINQ و async والأنواع العامة)، بحيث يمكنك استخدام الأقسام العلوية من اليوم الأول والتدرّج إلى البقية.
Coddy programming languages illustration

تعلّم C# مع Coddy

ابدأ الآن