مكتبة C# (.NET) القياسية: نظرة شاملة
مكتبة .NET القياسية (Base Class Library, BCL) هي الأساس الجوهري للتطوير باستخدام C#. وهي توفر آلاف الفئات والواجهات والهياكل والتعدادات الجاهزة التي تغطي جميع جوانب البرمجة تقريبًا: من العمل مع الأرقام والسلاسل النصية إلى التفاعل الشبكي والوصول إلى قواعد البيانات. في هذه النظرة الشاملة، سنستعرض مساحات الأسماء الرئيسية وإمكانياتها.
مساحة الاسم System: الأساس
تحتوي مساحة الاسم System على أنواع البيانات الأساسية المستخدمة في جميع تطبيقات C#. وتشمل:
- الأنواع البدائية:
Boolean،Byte،Int32،Double،Char،Stringوغيرها. كل منها يحتوي على طرق للتحويل والمقارنة والتنسيق. - الفئة
Math: توفر الثوابت (π، e) والطرق الثابتة للحسابات المثلثية واللوغاريتمية والإحصائية. - الفئة
Convert: تسمح بتحويل أنواع البيانات بأمان (مثل تحويل سلسلة نصية إلى رقم). - الفئة
Console: تدير الإدخال والإخراج في تطبيق وحدة التحكم.
using System;
int a = 42;double b = Math.Sqrt(a);string text = Convert.ToString(a);Console.WriteLine($"الجذر التربيعي لـ {text} يساوي {b}");System.Collections و System.Collections.Generic: العمل مع المجموعات
تحتوي مساحات الأسماء هذه على فئات لتخزين وإدارة مجموعات الكائنات. يجب أن تستخدم التطبيقات الحديثة الإصدارات العامة (generic) من System.Collections.Generic، لأنها توفر أمانًا للأنواع وأداءً أعلى.
List<T>— مصفوفة ديناميكية.Dictionary<TKey, TValue>— مجموعة "مفتاح-قيمة".Queue<T>وStack<T>— تنفيذ قائمة انتظار ومكدس.HashSet<T>— مجموعة من العناصر الفريدة.
using System.Collections.Generic;
var numbers = new List<int> { 1, 2, 3, 4, 5 };numbers.Add(6);numbers.Remove(3);
var map = new Dictionary<string, int>{ { "واحد", 1 }, { "اثنان", 2 }};
if (map.ContainsKey("واحد")) Console.WriteLine(map["واحد"]);System.Linq: لغة الاستعلامات المتكاملة
تسمح LINQ (Language Integrated Query) بتنفيذ استعلامات على المجموعات وقواعد البيانات وXML ومصادر البيانات الأخرى باستخدام بناء جملة موحد. يتم تعريف طرق التمديد الرئيسية في مساحة الاسم System.Linq:
Where— التصفية.Select— الإسقاط.OrderBy/ThenBy— الفرز.GroupBy— التجميع.Aggregate،Sum،Count— عمليات التجميع.
using System.Linq;
int[] scores = { 85, 92, 78, 95, 88 };var highScores = scores .Where(s => s >= 90) .OrderByDescending(s => s) .Select(s => $"الدرجة: {s}");
foreach (var item in highScores) Console.WriteLine(item);System.IO: العمل مع نظام الملفات والتدفقات
توفر مساحة الاسم System.IO فئات لقراءة/كتابة الملفات، والعمل مع الدلائل، وإدارة تدفقات البيانات. الفئات الرئيسية:
FileوFileInfo— طرق ثابتة ومثيلية للعمل مع الملفات.DirectoryوDirectoryInfo— إدارة المجلدات.StreamReader/StreamWriter— قراءة وكتابة الملفات النصية.