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".Length3
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>()). استخدم الأنواع الصريحة عندما لا يكون النوع واضحًا من الجانب الأيمن.

📖 ملخص

📝 تمارين

  1. اختر 3 طرق لا تعرفها. اقرأ الوثائق الخاصة بها على موقع Microsoft Learn. اكتب ملخصًا من سطر واحد لكل منها.
  2. ابحث عن موضع واحد في الكود الخاص بك يستخدم أنواعًا صريحة، حيث يكون استخدام var أكثر وضوحًا. أعد هيكلة هذا الموضع.
  3. اذكر 5 طرق في LINQ تتطلب مسندًا. ووضح متى تُستخدم كل منها.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%