مكتبة C# القياسية (.NET): نظرة شاملة
مكتبة .NET القياسية (Base Class Library, BCL) هي مجموعة أساسية من الفئات والواجهات وأنواع القيم التي تشكل جزءًا من منصة .NET. توفر للمطورين بلغة C# مكونات جاهزة لحل المهام النمطية: من التعامل مع المجموعات والملفات إلى التفاعل الشبكي والبرمجة غير المتزامنة. في هذه المقالة، سنستعرض بالتفصيل مساحات الأسماء والفئات الرئيسية التي يجب أن يعرفها كل مطور C#.
1. مساحة الاسم System — أساس كل شيء
تحتوي مساحة الاسم الجذرية System على الأنواع الأساسية:
- أنواع البيانات الأساسية:
Object،String،Int32،Double،Booleanوغيرها. - الأدوات المساعدة:
Console(الإدخال/الإخراج)،Math(الدوال الرياضية)،Random(توليد الأرقام العشوائية). - معالجة الأخطاء:
Exceptionومشتقاته (ArgumentException،NullReferenceException، إلخ).
مثال على الاستخدام:
using System;
class Program{ static void Main() { Console.WriteLine("مرحبًا، .NET!"); double result = Math.Sqrt(144); Console.WriteLine($"الجذر التربيعي لـ 144: {result}"); }}2. System.Collections — التعامل مع المجموعات
مساحة أسماء لتخزين وإدارة مجموعات الكائنات. تنقسم إلى مجموعات عامة (generic) وغير عامة.
الفئات الرئيسية:
List<T>— مصفوفة ديناميكية مع وصول سريع عبر الفهرس.Dictionary<TKey, TValue>— مصفوفة ترابطية (جدول تجزئة).Queue<T>— طابور (FIFO).Stack<T>— مكدس (LIFO).HashSet<T>— مجموعة من العناصر الفريدة.
مثال:
using System.Collections.Generic;
var numbers = new List<int> { 10, 20, 30 };numbers.Add(40);
var lookup = new Dictionary<string, int>{ ["واحد"] = 1, ["اثنان"] = 2};
Console.WriteLine(lookup["اثنان"]); // 23. System.Linq — استعلامات اللغة المتكاملة
تتيح LINQ إجراء استعلامات شبيهة بـ SQL على المجموعات وقواعد البيانات و XML. طرق التوسيع الرئيسية:
Where()— التصفية.Select()— الإسقاط.OrderBy()— الترتيب.GroupBy()— التجميع.Aggregate()— الدوال التجميعية (Sum, Count, Average).
مثال:
using System.Linq;
int[] scores = { 85, 92, 78, 95, 88 };var highScores = scores .Where(s => s >= 90) .OrderByDescending(s => s) .ToList();
Console.WriteLine(string.Join(", ", highScores)); // 95, 924. System.IO — التعامل مع الملفات والتدفقات
مساحة أسماء لإدخال وإخراج البيانات. الفئات الرئيسية:
File/FileInfo— إنشاء وقراءة وكتابة الملفات.Directory/DirectoryInfo— التعامل مع الدلائل.StreamReader/StreamWriter— قراءة/كتابة التدفقات النصية.FileStream— التعامل منخفض المستوى مع الملفات.
مثال على الكتابة والقراءة:
using System.IO;
string path = "example.txt";File.WriteAllText(path, "مرحبًا، .NET!");
string content = File.ReadAllText(path);Console.WriteLine(content); // مرحبًا، .NET!5. System.Threading.Tasks — البرمجة غير المتزامنة
النهج الحديث للتعامل مع عدم التزامن من خلال الكلمات المفتاحية async و await. الفئات الرئيسية