BitArray.Clone() मेथड वर्तमान BitArray की एक शैलो कॉपी बनाता है। नया BitArray समान लंबाई और बिट मानों वाला होता है, लेकिन एक अलग ऑब्जेक्ट होता है।
उदाहरण 1: आंशिक रूप से भरे BitArray की क्लोनिंग
using System;
using System.Collections;
public class Demo {
public static void Main() {
BitArray arr1 = new BitArray(5);
arr1[0] = false;
arr1[1] = true;
Console.WriteLine("BitArray1 लंबाई = " + arr1.Length);
Console.WriteLine("BitArray1 पहला तत्व = " + arr1.Get(0));
Console.WriteLine("BitArray1 दूसरा तत्व = " + arr1.Get(1));
// शैलो कॉपी बनाएं
BitArray arr2 = (BitArray)arr1.Clone();
Console.WriteLine("\nBitArray2 लंबाई = " + arr2.Length);
Console.WriteLine("BitArray2 पहला तत्व = " + arr2.Get(0));
Console.WriteLine("BitArray2 दूसरा तत्व = " + arr2.Get(1));
}
}
आउटपुट
BitArray1 लंबाई = 5
BitArray1 पहला तत्व = False
BitArray1 दूसरा तत्व = True
BitArray2 लंबाई = 5
BitArray2 पहला तत्व = False
BitArray2 दूसरा तत्व = True
उदाहरण 2: पूर्ण BitArray की क्लोनिंग और इटरेशन
using System;
using System.Collections;
public class Demo {
public static void Main() {
BitArray arr1 = new BitArray(5);
arr1[0] = false;
arr1[1] = true;
arr1[2] = false;
arr1[3] = true;
arr1[4] = true; // नोट: इंडेक्स 3 दो बार सेट किया गया, अंतिम मान प्रभावी
Console.WriteLine("BitArray1 लंबाई = " + arr1.Length);
Console.WriteLine("BitArray1 में तत्व...");
foreach (object obj in arr1) {
Console.WriteLine(obj);
}
BitArray arr2 = (BitArray)arr1.Clone();
Console.WriteLine("\nBitArray2 लंबाई = " + arr2.Length);
Console.WriteLine("BitArray2 में तत्व...");
foreach (object obj in arr2) {
Console.WriteLine(obj);
}
}
}
आउटपुट
BitArray1 लंबाई = 5
BitArray1 में तत्व...
False
True
False
True
True
BitArray2 लंबाई = 5
BitArray2 में तत्व...
False
True
False
True
True
महत्वपूर्ण बिंदु
- शैलो कॉपी: बिट्स वैल्यू टाइप (बूल) हैं, इसलिए शैलो कॉपी = डीप कॉपी।
- स्वतंत्र ऑब्जेक्ट्स: क्लोन के बाद, एक को बदलने से दूसरा प्रभावित नहीं होता।
- कास्टिंग आवश्यक:
Clone()objectलौटाता है,BitArrayमें कास्ट करें। - लंबाई संरक्षित: क्लोन की लंबाई मूल के समान होती है।
- ICloneable: BitArray
ICloneableइंटरफेस इम्प्लीमेंट करता है।
शैलो बनाम डीप कॉपी
चूंकि BitArray प्रिमिटिव bool मान स्टोर करता है (रेफरेंस टाइप नहीं), शैलो कॉपी प्रभावी रूप से एक डीप कॉपी होती है। प्रत्येक बिट स्वतंत्र रूप से कॉपी होता है।