Stack ক্লাস (নন-জেনেরিক) একটি লাস্ট-ইন-ফার্স্ট-আউট (LIFO) কালেকশন। জেনেরিক সংস্করণ Stack<T> টাইপ সেফটি ও পারফরম্যান্সের জন্য পছন্দনীয়।
Stack-এর প্রপার্টিগুলো
| ক্রম | প্রপার্টি ও বর্ণনা |
| 1 | Count — স্ট্যাকে এলিমেন্ট সংখ্যা। |
| 2 | IsSynchronized — থ্রেড-সেফ কিনা (সবসময় false)। |
| 3 | SyncRoot — সিঙ্ক্রোনাইজেশনের জন্য অবজেক্ট। |
Stack-এর মেথডসমূহ
| ক্রম | মেথড ও বর্ণনা |
| 1 | Clear() — সব অবজেক্ট মুছে ফেলে। |
| 2 | Clone() — শ্যালো কপি তৈরি করে। |
| 3 | Contains(Object) — এলিমেন্ট আছে কিনা। |
| 4 | CopyTo(Array, Int32) — অ্যারেতে কপি করে। |
| 5 | Peek() — টপ এলিমেন্ট দেখে (মুছে ফেলে না)। |
| 6 | Pop() — টপ এলিমেন্ট বের করে এবং মুছে ফেলে। |
| 7 | Push(Object) — টপে এলিমেন্ট যোগ করে। |
| 8 | GetEnumerator() — ইটারেটর রিটার্ন করে। |
উদাহরণ ১: Peek() দিয়ে টপ এলিমেন্ট দেখা
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
Stack<string> stack = new Stack<string>();
stack.Push("A");
stack.Push("B");
stack.Push("C");
stack.Push("D");
stack.Push("E");
stack.Push("F");
stack.Push("G");
stack.Push("H");
stack.Push("I");
stack.Push("J");
Console.WriteLine("Count of elements = " + stack.Count);
Console.WriteLine("Element at the top of stack = " + stack.Peek());
}
}
আউটপুট
Count of elements = 10
Element at the top of stack = J
উদাহরণ ২: Contains() দিয়ে এলিমেন্ট চেক করা
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
Stack<int> stack = new Stack<int>();
stack.Push(100);
stack.Push(150);
stack.Push(175);
stack.Push(200);
stack.Push(225);
stack.Push(250);
stack.Push(300);
stack.Push(400);
stack.Push(450);
stack.Push(500);
Console.WriteLine("Elements in the Stack:");
foreach(var val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("Count of elements in the Stack = " + stack.Count);
Console.WriteLine("Does Stack has the element 400?= " + stack.Contains(400));
}
}
আউটপুট
Elements in the Stack:
500
450
400
300
250
225
200
175
150
100
Count of elements in the Stack = 10
Does Stack has the element 400? = False
নোট
- আউটপুটে "400?" লেখা আছে কিন্তু Contains false রিটার্ন করেছে — সম্ভবত টাইপো (40400?)। আসলে ৪০০ আছে, তাই true হওয়া উচিত।
Stack<T> জেনেরিক ভার্সন ব্যবহার করুন (বক্সিং/আনবক্সিং এড়াতে)।
Peek() খালি স্ট্যাকে কল করলে InvalidOperationException থ্রো করে।