परिचय
C# में Stack.Clone() मेथड Stack की एक शैलो कॉपी (shallow copy) बनाता है। कॉपी किया गया स्टैक मूल के समान तत्वों को संदर्भित करता है लेकिन एक अलग संग्रह इंस्टेंस होता है।
सिंटैक्स
public virtual object Clone();
उदाहरण 1: इंटीजर स्टैक क्लोन करना
using System;
using System.Collections;
public class Demo {
public static void Main() {
Stack stack = new Stack();
stack.Push(150);
stack.Push(300);
stack.Push(500);
stack.Push(750);
stack.Push(1000);
stack.Push(1250);
stack.Push(1500);
stack.Push(2000);
stack.Push(2500);
Console.WriteLine("स्टैक तत्व...");
foreach (int val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("तत्वों की संख्या = " + stack.Count);
stack.Push(3000);
stack.Push(3500);
stack.Push(4000);
Console.WriteLine("\nस्टैक तत्व...अपडेटेड");
foreach (int val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("\nतत्वों की संख्या (अपडेटेड) = " + stack.Count);
Stack stack2 = (Stack)stack.Clone();
Console.WriteLine("\nस्टैक तत्व...क्लोन");
foreach (int val in stack2) {
Console.WriteLine(val);
}
Console.Write("क्लोन स्टैक में तत्वों की संख्या (अपडेटेड) = " + stack2.Count);
}
}
आउटपुट
स्टैक तत्व... 2500 2000 1500 1250 1000 750 500 300 150 तत्वों की संख्या = 9 स्टैक तत्व...अपडेटेड 4000 3500 3000 2500 2000 1500 1250 1000 750 500 300 150 तत्वों की संख्या (अपडेटेड) = 12 स्टैक तत्व...क्लोन 4000 3500 3000 2500 2000 1500 1250 1000 750 500 300 150 क्लोन स्टैक में तत्वों की संख्या (अपडेटेड) = 12
उदाहरण 2: स्ट्रिंग स्टैक क्लोन करना
using System;
using System.Collections;
public class Demo {
public static void Main() {
Stack stack = new Stack();
stack.Push("Inspiron");
stack.Push("Alienware");
stack.Push("Projectors");
stack.Push("Monitors");
stack.Push("XPS");
stack.Push("Laptop");
stack.Push("Notebook");
Console.WriteLine("स्टैक तत्व...");
foreach (string val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("तत्वों की संख्या = " + stack.Count);
stack.Push("Headphone");
stack.Push("Keyboard");
stack.Push("Earphone");
Console.WriteLine("\nस्टैक तत्व...अपडेटेड");
foreach (string val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("तत्वों की संख्या (अपडेटेड) = " + stack.Count);
Stack stack2 = (Stack)stack.Clone();
Console.WriteLine("\nस्टैक तत्व...क्लोन");
foreach (string val in stack2) {
Console.WriteLine(val);
}
Console.Write("तत्वों की संख्या (अपडेटेड) = " + stack2.Count);
}
}
आउटपुट
स्टैक तत्व... Notebook Laptop XPS Monitors Projectors Alienware Inspiron तत्वों की संख्या = 7 स्टैक तत्व...अपडेटेड Earphone Keyboard Headphone Notebook Laptop XPS Monitors Projectors Alienware Inspiron तत्वों की संख्या (अपडेटेड) = 10 स्टैक तत्व...क्लोन Earphone Keyboard Headphone Notebook Laptop XPS Monitors Projectors Alienware Inspiron तत्वों की संख्या (अपडेटेड) = 10
महत्वपूर्ण बिंदु
- शैलो कॉपी: तत्व स्वयं कॉपी नहीं होते - केवल संदर्भ (रेफरेंस) कॉपी होते हैं। रेफरेंस टाइप्स के लिए, दोनों स्टैक्स समान ऑब्जेक्ट्स को इंगित करते हैं।
- वैल्यू टाइप्स (int, float, आदि) के लिए प्रभावी रूप से डीप कॉपी होती है क्योंकि मान स्टैक पर संग्रहीत होते हैं।
- वापसी प्रकार
objectहै -Stackमें कास्ट करना आवश्यक। - जेनेरिक
Stack<T>मेंClone()नहीं है -new Stack<T>(original)कंस्ट्रक्टर याToArray()का उपयोग करें। - समय जटिलता: O(n)।