English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Stack هي نوع خاص من أنواع المجموعات يخزن العناصر بالشكل LIFO (آخر الدخول أولاً). يشمل C# Stack<T> المحدد بشكل عامي وStack غير المحدد. يُنصح باستخدام Stack<T> المحدد بشكل عامي.
المكدس مفيد جدًا في تخزين البيانات المؤقتة بالشكل LIFO، وقد ترغب في حذف قيمة العنصر عند استرداده.
Stack<T> هو مجموعة LIFO (آخر الدخول أولاً).
يوجد Stack<T> تحت مسمى المجموعات النموذجية System.Collection.Generic.
يمكن لمكدس Stack<T> أن يحتوي على عناصر من نوع محدد. يقدم التحقق من النوع في وقت التجميع، ويجنب عملية التعبئة والتشغيل لأنه نوعي.
يمكنك إضافة العناصر باستخدام طريقة Push(). لا يمكنك استخدام لغة التجميع (collection-initializer) في هذا السياق.
يمكنك استرداد العناصر باستخدام طرق Pop() وPeek(). لا يدعم محرر العناصر.
يمكنك إنشاء أهداف باستخدام نوع العنصر المحدد كمعامل نوع لـ Stack<T>، والذي يحتوي على العناصر. مثال التشغيل التالي يستخدم طريقة Push () لإنشاء وإضافة العناصر إلى Stack <T>. يسمح المكدس بالنقاط المفقودة (لأنواع الاستدلال) والقيم المكررة.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); foreach (var item in myStack) Console.Write(item + ","); // طباعة 4,3,2,1،
يمكنك أيضًا إنشاء Stack من مصفوفة، كما يلي.
int[] arr = new int[]{ 1, 2, 3, 4}; Stack<int> myStack = new Stack<int>(arr); foreach (var item in myStack) Console.Write(item + ","); // طباعة 4,3,2,1،
الصفة | الاستخدام |
---|---|
Count | يعيد عدد العناصر في Stack. |
الطريقة | الاستخدام |
---|---|
Push(T) | إدراج مشروع جديد في أعلى Stack. |
Peek() | إرجاع العنصر في أعلى Stack. |
Pop() | إزالة وإرجاع العنصر من أعلى Stack. |
Contains(T) | تحقق من وجود عنصر في Stack. |
Clear() | إزالة جميع العناصر من Stack. |
يحقق Pop() العنصر الأخير ويزيله من Stack. إذا كان Stack فارغًا، سيتم إطلاق InvalidOperationException. لذلك، قم دائمًا بفحص عدد العناصر في Stack قبل استدعاء Pop().
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); Console.Write("عدد العناصر في Stack: {0}", myStack.Count); while (myStack.Count > 0) Console.Write(myStack.Pop() + ","); Console.Write("عدد العناصر في Stack: {0}", myStack.Count);
عدد العناصر في Stack: 4 4,3,2,1، عدد العناصر في Stack: 0
يحقق Peek() العنصر الأخير المضيف في الـ Stack، ولكن لا يزال يحتفظ به. عند استدعاء Peek() في Stack فارغ، سيتم إطلاق InvalidOperationException. لذلك، قم دائمًا بفحص العناصر في Stack قبل استدعاء Peek() لاسترجاع العنصر.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); Console.Write("عدد العناصر في Stack: {0}", myStack.Count); // يتم إدخال 4 if(myStack.Count > 0){ Console.WriteLine(myStack.Peek()); // يتم إدخال 4 Console.WriteLine(myStack.Peek()); // يتم إدخال 4 } Console.Write("عدد العناصر في Stack: {0}", myStack.Count); // يتم إدخال 4
يحقق طريقة Contains() ما إذا كان العنصر المحدد موجودًا في مجموعة Stack. إذا كان موجودًا، فسيتم إرجاع true، وإلا سيتم إرجاع false.
Stack<int> myStack = new Stack<int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); myStack.Contains(2); // يعود إلى true myStack.Contains(10); // يعود إلى false