Stack<T> क्लास ऑब्जेक्ट्स के सिंपल लास्ट-इन-फर्स्ट-आउट (LIFO) नॉन-जेनेरिक संग्रह को दर्शाता है।
Stack गुण
| गुण | विवरण |
|---|---|
| Count | Stack में समाहित एलिमेंट्स की संख्या |
| IsSynchronized | क्या Stack का एक्सेस सिंक्रोनाइज़्ड (थ्रेड-सेफ) है |
| SyncRoot | Stack तक एक्सेस सिंक्रोनाइज़ करने के लिए उपयोग होने वाला ऑब्जेक्ट |
Stack मेथड्स
| मेथड | विवरण |
|---|---|
Clear() | Stack से सभी ऑब्जेक्ट्स हटाता है |
Clone() | Stack की शैलो कॉपी बनाता है |
Contains(Object) | क्या एलिमेंट Stack में है |
CopyTo(Array, Int32) | Stack को मौजूदा ऐरे में कॉपी करता है |
Equals(Object) | निर्दिष्ट ऑब्जेक्ट वर्तमान ऑब्जेक्ट के बराबर है? |
GetEnumerator() | Stack के लिए IEnumerator लौटाता है |
GetHashCode() | डिफ़ॉल्ट हैश फंक्शन |
GetType() | वर्तमान इंस्टेंस का Type प्राप्त करता है |
Peek() | शीर्ष ऑब्जेक्ट लौटाता है (बिना हटाए) |
Pop() | शीर्ष ऑब्जेक्ट हटाता है और लौटाता है |
Push(Object) | शीर्ष पर ऑब्जेक्ट इन्सर्ट करता है |
उदाहरण 1: 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()); // J
}
}
आउटपुट
Count of elements = 10
Element at the top of stack = J
उदाहरण 2: 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
नोट: आउटपुट में टाइपो
मूल आउटपुट में "40400" टाइपो है, सही है "400"।
पूर्ण उदाहरण: सभी ऑपरेशन्स
using System;
using System.Collections.Generic;
public class StackDemo {
public static void Main() {
var stack = new Stack<string>();
// Push
stack.Push("First");
stack.Push("Second");
stack.Push("Third");
Console.WriteLine($"After Push: Count={stack.Count}, Top={stack.Peek()}");
// Contains
Console.WriteLine($"Contains 'Second': {stack.Contains("Second")}");
// Pop
string popped = stack.Pop();
Console.WriteLine($"Popped: {popped}, New Top: {stack.Peek()}");
// Clear
stack.Clear();
Console.WriteLine($"After Clear: Count={stack.Count}");
// ToArray
stack.Push("A");
stack.Push("B");
string[] arr = stack.ToArray();
Console.WriteLine("Array: " + string.Join(", ", arr)); // B, A
}
}
जेनेरिक vs नॉन-जेनेरिक
- Stack<T> (System.Collections.Generic): टाइप-सेफ, बेहतर पेरफॉरमेंस, अनुशंसित
- Stack (System.Collections): नॉन-जेनेरिक, object स्टोर करता है, लिगेसी
थ्रेड सेफ्टी
// मैन्युअल लॉकिंग
lock (stack.SyncRoot) {
stack.Push(item);
}
// या ConcurrentStack (लॉक-मुक्त)
using System.Collections.Concurrent;
var concurrentStack = new ConcurrentStack<string>();
concurrentStack.Push("item");
concurrentStack.TryPop(out string result);