اینجا میتونی برنامه نویسی ویندوز رو به طور کاملا رایگان یاد بگیری
3 سال پیش / خواندن دقیقه

کلاس Stack در سی شارپ

stack نوع خاصی از کالکشن ها در سی شارپ است که عملیات ذخیره سازی مقادیر را به صورت LIFO انجام میدهد. و این بدان معناست که آخرین مقداری که وارد stack میشود، اولین مقداری است که از آن خارج میشود. در این فصل با کالکشن stack آشنا میشویم.

کلاس Stack

سی شارپ شامل نوع خاصی از کالکشن است که عملیات ذخیره سازی را به صورت LIFO انجام می دهد.

سی شارپ برای کالکشن stack دارای دو نسخه generic و non-generic است که در این فصل با نسخه non-generic آن آشنا خواهید شد. در stack می توان مقدار null و یا مقدار تکراری قرار داد. این کالکشن از متد ()Push برای افزودن مقادیر و از متد ()Pop برای واکشی مقادیر استفاده می کند.

کلاس Stack در سی شارپ

اضافه کردن مقادیر به stack

از متد ()Push برای افزودن مقادیر به stack استفاده می کنیم. می توان هر مقداری را با هر داده نوعی به stack اضافه کرد. مثالی از اضافه کردن مقادیر به stack :

Stack myStack = new Stack();
myStack.Push("Hello!!");
myStack.Push(null);
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
myStack.Push(5);

دسترسی به عناصر stack

می توان مقادیر موجود در stack را به روش های مختلفی واکشی کرد. یک روش استفاده از حلقه foreach و پیمایش در stack است :

Stack myStack = new Stack();
myStack.Push("Hello!!");
myStack.Push(null);
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
myStack.Push(5);
foreach (var itm in myStack)
     Console.Write(itm);

خروجی مثال بالا به شکل زیر است :

5 4 3 2 1  Hello!!

متد ()Peek

از متد ()Peek برای واکشی آخرین مقدار از stack استفاده می کنیم.این متد فقط عنصر مورد نظر را واکشی میکند و آنها را از stack حذف نمیکند. فراخوانی متد ()Peek بر روی یک stack خالی باعث می‌شود استثنای InvalidOperationException رخ دهد. بنابراین همیشه از وجود مقادیر در stack اطمینان حاصل کنید :

Stack myStack = new Stack();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
myStack.Push(5);
Console.WriteLine(myStack.Peek());
Console.WriteLine(myStack.Peek());
Console.WriteLine(myStack.Peek());

خروجی نمونه مثال بالا به شکل زیر است :

5 5 5

 

متد ()Pop

می توان از متد ()Pop برای واکشی مقادیر از stack استفاده کرد. این متد مقدار آخری که وارد stack شده را از آن حذف و برای ما بازمی‌گرداند. فراخوانی متد ()Pop بر روی یک Stack خالی باعث می‌شود استثنای InvalidOperationException رخ دهد. بنابراین در زمان فراخوانی ()Pop همیشه تعداد مقادیر Stack باید بزرگتر از صفر باشد :

Stack myStack = new Stack();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
myStack.Push(5);
Console.Write("Number of elements in Stack: {0}", myStack.Count);
while (myStack.Count > 0)
     Console.WriteLine(myStack.Pop());
Console.Write("Number of elements in Stack: {0}", myStack.Count);

خروجی نمونه مثال بالا به شکل زیر است :

Number of elements in Stack: 5 5 4 3 2 1 Number of elements in Stack: 0

متد ()Contains

متد ()Contains بررسی می‌کند که مقدار مشخصی در Stack وجود دارد و یا خیر. در صورتی که مقدار مورد نظر در Stack وجود داشته باشد مقدار true و در غیر این صورت مقدار false را برمیگرداند.

Stack myStack = new Stack();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
myStack.Push(5);
myStack.Contains(2); // returns true
myStack.Contains(10); // returns false

متد ()Clear

از متد ()Clear برای حذف همه مقادیر از Stack استفاده کنید :

Stack myStack = new Stack();
myStack.Push(1);
myStack.Push(2);
myStack.Push(3);
myStack.Push(4);
myStack.Push(5);
myStack.Clear(); // removes all elements
Console.Write("Number of elements in Stack: {0}", myStack.Count);


شاید از نوشته‌های زیر خوشتان بیاید
نظر خود را درباره این پست بنویسید ...

منوی سریع