C#: مرجع لغة C#
1. مرجع سريع لكلمات C# الرئيسية
| الكلمة المفتاحية | الوصف |
|---|---|
abstract |
إعلان فئة مجردة أو عضو مجرد |
as |
تحويل آمن للنوع، يُرجع القيمة null في حالة الفشل |
base |
الوصول إلى عضو في الفئة الأساسية |
bool |
النوع المنطقي (صحيح/خطأ) |
break |
الخروج من الحلقة أو التبديل |
byte |
عدد صحيح غير مُوقَّع ذو 8 بت (0~255) |
case |
تسمية فرع التبديل |
catch |
استثناء |
char |
حرف يونيكود (16 بت) |
checked |
تمكين فحص التجاوز |
class |
تعريف فئة |
const |
تعريف ثابت |
continue |
تخطي التكرار الحالي للحلقة |
decimal |
عدد عشري عالي الدقة بـ 128 بت |
default |
التبديل إلى الفرع الافتراضي أو إدخال القيمة الافتراضية |
delegate |
تعريف نوع المندوب |
do |
حلقة do-while |
double |
64 بت، دقة مزدوجة، عائمة |
else |
فرع if else |
enum |
تعريف قائمة |
event |
الإعلان عن الحدث |
explicit |
تعريف عامل تحويل صريح |
extern |
إعلان طريقة مُنفَّذة خارجيًا |
false |
القيمة الثابتة المنطقية «false» |
finally |
كتلة try finally |
fixed |
تثبيت عنوان متغير (غير آمن) |
float |
32 بت، دقة أحادية، عائمة |
for |
حلقة for |
foreach |
التكرار على المجموعة |
goto |
القفز غير المشروط |
if |
فحص شرطي |
implicit |
تعريف عامل التحويل الضمني |
in |
التباين العام / تكرار foreach / مُعدِّل المعلمة |
int |
عدد صحيح موقَّع 32 بت |
interface |
تعريف واجهة |
internal |
مرئي داخل التجميع |
is |
مطابقة أنماط النوع |
lock |
قفل الاستبعاد المتبادل |
long |
عدد صحيح موقَّع 64 بت |
namespace |
تعريف مساحة الاسم |
new |
إنشاء مثيل / إخفاء عنصر أساسي / قيد عام |
null |
قيمة مرجعية فارغة |
object |
النوع الأساسي لجميع الأنواع |
operator |
إعلان تحميل متكرر للمشغل |
out |
معلمة الإخراج / التباين المشترك العام |
override |
تجاوز العضو الافتراضي الأساسي |
params |
معلمة ذات طول متغير |
private |
وصول خاص |
protected |
وصول محمي |
public |
متاح للجمهور |
readonly |
حقل للقراءة فقط |
ref |
التمرير بالمرجع |
return |
قيمة الإرجاع |
sbyte |
عدد صحيح موقَّع ذو 8 بت |
sealed |
الفئة المُغلقة / التجاوز المُغلق |
short |
عدد صحيح موقّع 16 بت |
sizeof |
الحصول على حجم النوع (غير آمن) |
stackalloc |
تخصيص الذاكرة في المكدس (غير آمن) |
static |
عضو ثابت |
string |
نوع مرجع سلسلة يونيكود |
struct |
إعلان بنية من نوع القيمة |
switch |
اختيار متعدد الفروع |
this |
مرجع المثيل الحالي / مُفهرس الإعلان / طريقة التمديد |
throw |
إثارة استثناء |
true |
القيمة الثابتة المنطقية «true» |
try |
كتلة معالجة الاستثناءات |
typeof |
الحصول على كائن النوع |
uint |
عدد صحيح غير مُوقَّع 32 بت |
ulong |
عدد صحيح غير مُوقَّع 64 بت |
unchecked |
تعطيل فحص التجاوز |
unsafe |
سياق غير آمن |
ushort |
عدد صحيح غير مُوقَّع 16 بت |
using |
استيراد مساحة الاسم / التخلص من الموارد |
virtual |
إعلان عضو افتراضي |
void |
لا توجد قيمة إرجاع |
volatile |
وضع علامة على الحقل على أنه غير مخزّن مؤقتًا لأغراض التحسين |
while |
حلقة while |
2. مرجع سريع لمحددات التنسيق
| المُحدد | الوصف | مثال |
|---|---|---|
D / d |
عدد صحيح عشري | 42.ToString("D5") → "00042" |
F / f |
النقطة الثابتة | 3.14.ToString("F2") → "3.14" |
C / c |
العملة | 1234.5.ToString("C") → "$1,234.50" |
P / p |
النسبة المئوية | 0.156.ToString("P1") → "15.6 %" |
E / e |
التمثيل العلمي | 12345.ToString("E2") → "1.23E+004" |
X / x |
سداسي عشري | 255.ToString("X") → "FF" |
G / g |
عام (يختار تلقائيًا الشكل الأكثر إيجازًا) | 3.14.ToString("G") → "3.14" |
3. الطرق الشائعة للسلاسل
| الطريقة | الوصف | مثال |
|---|---|---|
Length |
الحصول على عدد الأحرف | "abc".Length → 3 |
Substring(start) |
استخراج من نقطة البداية إلى نقطة النهاية | "hello".Substring(2) → "llo" |
Substring(start, len) |
استخراج سلسلة فرعية بطول محدد | "hello".Substring(1, 3) → "ell" |
Replace(old, new) |
استبدال جميع النتائج المطابقة | "aabb".Replace("a","c") → "ccbb" |
Split(separators) |
تقسيم إلى مصفوفة باستخدام الفاصل | "a,b,c".Split(',') → ["a","b","c"] |
Trim() |
إزالة المسافات البيضاء في بداية ونهاية النص | " hi ".Trim() → "hi" |
Contains(value) |
ما إذا كانت السلسلة الفرعية موجودة | "hello".Contains("ell") → true |
IndexOf(value) |
البحث عن أول مؤشر لسلسلة فرعية | "abcabc".IndexOf("bc") → 1 |
LastIndexOf(value) |
البحث عن آخر مؤشر لسلسلة فرعية | "abcabc".LastIndexOf("bc") → 4 |
ToUpper() |
تحويل إلى أحرف كبيرة | "Abc".ToUpper() → "ABC" |
ToLower() |
تحويل إلى أحرف صغيرة | "AbC".ToLower() → "abc" |
StartsWith(value) |
ما إذا كانت السلسلة تبدأ بالقيمة المحددة | "hello".StartsWith("he") → true |
EndsWith(value) |
ما إذا كانت السلسلة تنتهي بالقيمة المحددة | "hello".EndsWith("lo") → true |
PadLeft(total) |
ملء الفراغات على اليسار حتى الطول المحدد | "5".PadLeft(3) → " 5" |
PadRight(total) |
ملء الفراغات على اليمين حتى الطول المحدد | "5".PadRight(3) → "5 " |
Remove(start) |
حذف الأحرف من الموضع الأول حتى الموضع الأخير | "hello".Remove(2) → "he" |
Remove(start, len) |
إزالة أحرف بطول محدد | "hello".Remove(1,2) → "hlo" |
Insert(start, value) |
إدراج سلسلة في الموضع المحدد | "ab".Insert(1,"X") → "aXb" |
IsNullOrEmpty(s) |
سواء كانت قيمة فارغة أو سلسلة فارغة | string.IsNullOrEmpty(null) → true |
IsNullOrWhiteSpace(s) |
سواء كانت فارغة أو تحتوي على مسافات بيضاء فقط | string.IsNullOrWhiteSpace(" ") → true |
Join(sep, arr) |
ضم المصفوفات باستخدام فاصل | string.Join("-",["a","b"]) → "a-b" |
Concat(a, b) |
ربط السلاسل | string.Concat("x","y") → "xy" |
Format(fmt, args) |
سلسلة التنسيق | string.Format("{0}+{1}={2}",1,2,3) → "1+2=3" |
Compare(a, b) |
مقارنة ترتيب سلسلتين | string.Compare("a","b") → -1 |
Equals(a, b) |
ما إذا كان متساويًا | string.Equals("a","a") → true |
Clone() |
إرجاع مرجع السلسلة نفسها | "s".Clone() → "s" |
Copy(s) |
إنشاء نسخة من السلسلة (طريقة قديمة) | string.Copy("s") → "s" |
ToCharArray() |
تحويل إلى مصفوفة أحرف | "abc".ToCharArray() → ['a','b','c'] |
4. مقارنة أنواع المجموعات
| نوع المجموعة | مساحة الاسم | إمكانية الوصول | قابل للفرز | ديناميكي | الاستخدام النموذجي |
|---|---|---|---|---|---|
Array |
System |
فهرس O(1) | نعم | لا | تخزين بيانات بحجم ثابت وعالي الأداء |
List<T> |
System.Collections.Generic |
الفهرس O(1) | نعم | نعم | قائمة ديناميكية متعددة الأغراض |
Dictionary<K,V> |
System.Collections.Generic |
مفتاح O(1) | لا | نعم | التعيين بين المفتاح والقيمة والبحث السريع |
Queue<T> |
System.Collections.Generic |
FIFO | لا | نعم | جدولة المهام، قائمة انتظار الرسائل |
Stack<T> |
System.Collections.Generic |
LIFO | لا | نعم | التراجع عن العمليات، تقييم التعبيرات |
HashSet<T> |
System.Collections.Generic |
البحث عن التجزئة | لا | نعم | إزالة التكرار، عمليات المجموعات |
LinkedList<T> |
System.Collections.Generic |
اجتياز العقد | لا | نعم | الإدراج والحذف المتكرر للرأس/الذيل |
5. مقارنة مُعدِّلات الوصول
| المُعدِّل | نفس الفئة | الفئة الفرعية (نفس التجميع) | غير الفئة الفرعية (نفس التجميع) | الفئة الفرعية (تجميع مختلف) | غير الفئة الفرعية (تجميع مختلف) |
|---|---|---|---|---|---|
public |
✅ | ✅ | ✅ | ✅ | ✅ |
private |
✅ | ❌ | ❌ | ❌ | ❌ |
protected |
✅ | ✅ | ❌ | ✅ | ❌ |
internal |
✅ | ✅ | ✅ | ❌ | ❌ |
protected internal |
✅ | ✅ | ✅ | ✅ | ❌ |
private protected |
✅ | ✅ | ❌ | ❌ | ❌ |
6. مرجع سريع لمساحة الأسماء المشتركة
| مساحة الأسماء | الغرض | الفئات الشائعة |
|---|---|---|
System |
الأنواع الأساسية والوظائف الأساسية | Console، Math، Environment، Convert، DateTime |
System.IO |
عمليات الملفات والدفق | File، Directory، Path، StreamReader، StreamWriter، FileStream |
System.Collections |
المجموعات غير العامة | ArrayList، Hashtable، Queue، Stack |
System.Collections.Generic |
مجموعات عامة | List<T>، Dictionary<K,V>، Queue<T>، Stack<T>، HashSet<T>، LinkedList<T> |
System.Linq |
استعلامات LINQ | Enumerable، Queryable |
System.Text |
معالجة النصوص وترميزها | StringBuilder، Encoding، UTF8Encoding |
System.Text.Json |
تسلسل JSON | JsonSerializer، JsonDocument، JsonNode |
System.Threading |
الخيوط والتزامن | Thread، Mutex، Semaphore، Monitor، CancellationToken |
System.Threading.Tasks |
المهام غير المتزامنة والمتوازية | Task، Task<T>، Parallel، ValueTask |
System.Reflection |
انعكاس النوع | Assembly، Type، MethodInfo، PropertyInfo، FieldInfo |
System.Text.RegularExpressions |
التعبيرات النمطية | Regex، Match، Group، Capture |
System.Diagnostics |
التشخيص وإدارة العمليات | Process، Debug، Trace، Stopwatch |
7. نظرة عامة على ميزات إصدارات لغة C#
| الإصدار | السنة | الميزات الرئيسية |
|---|---|---|
| C# 1.0 | 2002 | الفئات، والبنى، والواجهات، والمندوبون، والأحداث، وتحميل المشغلات، والمؤشرات، والخصائص، والسمات |
| C# 2.0 | 2005 | الأنواع العامة، والفئات الجزئية، والأساليب المجهولة، والأنواع القابلة للقيمة «null»، والمكررات، والتباين المشترك والتباين المعاكس |
| C# 3.0 | 2007 | LINQ، تعبيرات لامدا، طرق التمديد، الكتابة الضمنية (var)، الأنواع المجهولة، الخصائص التلقائية، أشجار التعبيرات |
| C# 4.0 | 2010 | الربط الديناميكي (dynamic)، المعلمات المسماة، المعلمات الاختيارية، التباين المشترك والتباين المعاكس في الأنواع العامة |
| C# 5.0 | 2012 | async/await، معلومات المتصل (CallerMemberName، إلخ) |
| C# 6.0 | 2015 | الاستيفاء السلسلي، عامل التشغيل الشرطي للقيمة «null»، العناصر ذات الجسم التعبيري، استخدام «static»، مرشحات الاستثناءات، مُهيِّئات الخصائص التلقائية |
| C# 7.0 | 2017 | مطابقة الأنماط، المجموعات، الدوال المحلية، متغيرات «out»، فواصل الأرقام، إرجاع القيم المرجعية |
| C# 7.1 | 2017 | دالة Main غير متزامنة، القيم الثابتة الافتراضية، أسماء التوبولات المستنتجة |
| C# 7.2 | 2017 | في المعلمات، والبنى المرجعية، والبنى القابلة للقراءة فقط، وSpan<T> |
| C# 7.3 | 2018 | تحسينات في مطابقة الأنماط، ومقارنة التوبلات، ومصفوفات stackalloc |
| C# 8.0 | 2019 | أنواع المراجع القابلة للقيمة الفارغة، والنطاقات والفهارس، والتدفقات غير المتزامنة، وأساليب الواجهة الافتراضية، ومطابقة الأنماط المحسّنة، وإعلانات using |
| C# 9.0 | 2020 | أنواع السجلات، خصائص التهيئة، العبارات ذات المستوى الأعلى، مطابقة الأنماط المحسّنة، كلمة «new» ذات النوع المستهدف، القيم المرجعة المتغيرة |
| C# 10.0 | 2021 | الاستخدامات العالمية، مساحات الأسماء ذات نطاق الملف، بنية السجل، إدراج السلاسل الثابتة، تحسينات لامدا |
| C# 11.0 | 2022 | سلاسل نصية أولية، الخصائص الإلزامية، السمات العامة، أنماط القوائم، سلاسل نصية بتنسيق UTF-8 |
| C# 12.0 | 2023 | منشئات أولية، تعبيرات المجموعات، المصفوفات المضمنة، دعم العناصر العامة من نوع ref struct، الاسم المستعار لأي نوع |
▶ مثال
CSHARP
// A quick look-up snippet: keywords + format specifiers + common string methods
int n = 42;
string s = n.ToString("D5"); // format specifier: "00042"
string t = " Hello ".Trim(); // string method
System.Console.WriteLine($"{s} {t}");
TEXT
📖 للعرض فقط
00042 Hello
❓ أسئلة شائعة
س أين يمكنني العثور على المرجع الرسمي للغة C#؟
ج المرجع الرسمي موجود على Microsoft Learn — وهو يغطي كل دالة وخاصية وحالة استثنائية.
س كيف يمكنني الحفاظ على تحديث هذه المرجع؟
ج أضف موقع Microsoft Learn إلى قائمة المواقع المفضلة. تتطور لغة C# سنويًّا؛ وتغطي هذه الصفحة ميزات C# 10 وما بعدها.
س لماذا يُفضل استخدام
var على الأنواع الصريحة؟ج يقلل
var من الإسهاب عندما يكون النوع واضحًا من السياق (على سبيل المثال، var list = new List<int>()). استخدم الأنواع الصريحة عندما لا يكون النوع واضحًا من الجانب الأيمن.📖 ملخص
- يتناول هذا المرجع العبارات والمُشغِّلات والأساليب الأساسية في لغة C#
- يُعد «Microsoft Learn» المصدر الموثوق للحالات الاستثنائية والميزات الجديدة
- يُفضل استخدام
varعندما يكون النوع واضحًا، واستخدام الأنواع الصريحة عندما يكون غير واضح - تُعدُّ أساليب LINQ مستقرة، لكن تظهر أساليب جديدة كل عام
📝 تمارين
- اختر 3 طرق لا تعرفها. اقرأ الوثائق الخاصة بها على موقع Microsoft Learn. اكتب ملخصًا من سطر واحد لكل منها.
- ابحث عن موضع واحد في الكود الخاص بك يستخدم أنواعًا صريحة، حيث يكون استخدام
varأكثر وضوحًا. أعد هيكلة هذا الموضع. - اذكر 5 طرق في LINQ تتطلب مسندًا. ووضح متى تُستخدم كل منها.