English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي C#

دليل متقدم C#

C# موجه الأجهزة (OOP)

البنية في C#

تستخدم المتغيرات لتحديد القيم المباشرة، بينما تستخدم المصفوفات لتحديد مجموعة من القيم المباشرة.

المصفوفة هي هيكل بيانات يخزن عدد ثابت من القيم النصية من نفس النوع (عناصر). يتم تخزين عناصر المصفوفة بشكل متتابع في الذاكرة.

في C#، يمكن أن تكون المصفوفات من ثلاثة أنواع: مصفوفة أحادية الأبعاد، مصفوفة متعددة الأبعاد ومصفوفة متدرجة. في هذا السياق، ستعرف المصفوفة أحادية الأبعاد.

يوضح الشكل التالي شكل تمثيل المصفوفة.

تمثل المصفوفة

إعلان وتحديد المصفوفة

يمكن استخدام الأسهم لتحديد نوع العناصر في المصفوفة عند إعلانها.

int[] evenNums;     // مصفوفة أرقام كاملة
string[] cities; // مصفوفة نصية

تقوم هذه الجملة بإعلان المصفوفة وإضافة القيم إليها في جملة واحدة.

int[] evenNums = new int[5]{ 2, 4, 6, 8, 10 }; 
string[] cities = new string[3]{ "Mumbai", "London", "New York" };

في هذا السياق، يمكن لتعداد evenNums أن يحتوي على خمس أرقام كاملة. new int[5] الرقم 5 في الأسهم هو تحديد حجم المصفوفة. وبالمثل، حجم تعداد cities هو 3. يتم إضافة عناصر المصفوفة إلى قائمة منفصلة بالكواشات {} بواسطة نقاط عالية.

يمكن استخدام كلمة المفتاح var لتحديد متغيرات النوع المصفوفة دون استخدام الأسهم [].

var evenNums = new int[]{ 2, 4, 6, 8, 10 } 
var cities = new string[]{ "Mumbai", "London", "New York" }

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

int[] evenNums = { 2, 4, 6, 8, 10 }; 
string[] cities = { "Mumbai", "London", "New York" }

في هذا المثال، يتم عرض إنشاء لوحة غير صحيحة.

// يجب تحديد الحجم 
int[] evenNums = new int[]; 
// يجب أن يكون عدد العناصر متساوياً في الحجم المحدد 
int[] evenNums = new int[5] { 2, 4 };
// لا يمكن استخدام var مع برنامج التوليد
var evenNums = { 2, 4, 6, 8, 10 };

التأخير في التوليد

ليس من الضروري إعلان وتوليد اللوحة في جملة واحدة. يمكنك أولاً إعلان اللوحة ثم توليدها باستخدام عمودي الجديد.

int[] evenNums;
evenNums = new int[5];
// أو
evenNums = new int[]{ 2, 4, 6, 8, 10 };

استدعاء عناصر اللوحة

يمكن استدعاء عناصر اللوحة باستخدام المؤشر. المؤشر هو الرقم المرتبط بكل عنصر من عناصر اللوحة، يبدأ من المؤشر 0 حتى حجم اللوحة-1.

في هذا المثال، يستخدم المؤشر لاستدعاء/تحديث واسترجاع عناصر اللوحة.

int[] evenNums = new int[5];
evenNums[0] = 2;
evenNums[1] = 4;
//evenNums[6] = 12; // يسبب استثناء IndexOutOfRange عند التشغيل
Console.WriteLine(evenNums[0]); // يُعرض 2
Console.WriteLine(evenNums[1]); // يُعرض 4

لاحظ، عند محاولة إضافة عنصر يتجاوز حجمه المحدد يسبب استثناء IndexOutOfRangeException.

استخدام الدوال التكرارية لاستدعاء اللوحة

استخدام الدوال التكرارية لاستدعاء عناصر اللوحة. في تعبير شرط الدوال التكرارية يستخدم خصائص طول اللوحة.

int[] evenNums = { 2, 4, 6, 8, 10 };
for(int i = 0; i < evenNums.Length; i++) {
    Console.WriteLine(evenNums[i]);  
}
for(int i = 0; i < evenNums.Length; i++) {
    evenNums[i] = evenNums[i] + 10; // تحديث قيمة كل عنصر بـ 10
}

استخدام حلقة foreach لاستدعاء المصفوفة

استخدام حلقة foreach لقراءة قيمة عناصر المصفوفة دون استخدام المؤشر

int[] evenNums = { 2, 4, 6, 8, 10 }; 
string[] cities = { "Mumbai", "London", "New York" }; 
foreach(var item in evenNums) {
    Console.WriteLine(item);   
}
foreach(var city in cities) {
    Console.WriteLine(city);
}

طرق LINQ

تتفرع جميع المصفوفات في C# من الفئة الأساسية النسبية System.Array.

تم تنفيذ فئة Array لتحقيق واجهة IEnumerable، مما يتيح لك استخدام طرق التوسيع LINQ مثل Max()،Min()،Sum()،reverse()، إلخ.

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };
nums.Max(); // عودة 16
nums.Min(); // عودة 6
nums.Sum(); // عودة 55
nums.Average(); // عودة 55

يحتوي فئة System.Array أيضًا على طرق用于 إنشاء، التشغيل، البحث وتصنيف المصفوفات.

int[] nums = new int[5]{ 10, 15, 16, 8, 6 };
Array.Sort(nums); // ترتيب المصفوفة 
Array.Reverse(nums); // ترتيب المصفوفة في ترتيب تنازلي
Array.ForEach(nums, n => Console.WriteLine(n)); // تكرار المصفوفة
Array.BinarySearch(nums, 5); // البحث الثنائي

نقل مصفوفة كمعامل

يمكن نقل المصفوفة كمعامل للمفردات. المصفوفة نوع مرجع، لذا يمكن لتلك الطريقة تغيير قيمة عناصر المصفوفة.

public static void Main() {
    int[] nums = { 1, 2, 3, 4, 5 };
    UpdateArray(nums); 
    foreach(var item in nums)
        Console.WriteLine(item);   
}
                    
public static void UpdateArray(int[] arr)
{
    للدوران (int i = 0; i < arr.Length; i++)
        arr[i] = arr[i] + 10;   
}

للإطلاع على المزيد المجمع المتعدد الأبعاد و المجمع الأسى.