Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การสร้าง Shallow Copy ของ BitArray ใน C#

ภาพรวม

BitArray.Clone() สร้าง shallow copy คืนค่า object ต้องแปลงเป็น BitArray อีกครั้ง คัดลอกค่า bit ทั้งหมดแต่เป็นอินสแตนซ์ใหม่

ตัวอย่างที่ 1: Clone BitArray ขนาด 5 ตรวจสอบค่าแต่ละ bit

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("BitArray length = " + arr1.Length);
        Console.WriteLine("BitArray first element = " + arr1.Get(0));
        Console.WriteLine("BitArray second element = " + arr1.Get(1));

        BitArray arr2 = (BitArray)arr1.Clone();

        Console.WriteLine("\nBitArray2 length = " + arr2.Length);
        Console.WriteLine("BitArray2 first element = " + arr2.Get(0));
        Console.WriteLine("BitArray2 second element = " + arr2.Get(1));
    }
}

ผลลัพธ์

BitArray length = 5
BitArray first element = False
BitArray second element = True
BitArray2 length = 5
BitArray2 first element = False
BitArray2 second element = True

ตัวอย่างที่ 2: Clone 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[3] = true; // ตั้งค่าซ้ำ

        Console.WriteLine("BitArray length = " + arr1.Length);
        Console.WriteLine("Elements in BitArray1...");
        foreach (Object obj in arr1)
        {
            Console.WriteLine(obj);
        }

        BitArray arr2 = (BitArray)arr1.Clone();

        Console.WriteLine("\nBitArray2 length = " + arr1.Length);
        Console.WriteLine("Elements in BitArray2...");
        foreach (Object obj in arr2)
        {
            Console.WriteLine(obj);
        }
    }
}

ผลลัพธ์

BitArray length = 5
Elements in BitArray1...
False
True
False
True
False
BitArray2 length = 5
Elements in BitArray2...
False
True
False
True
False

สรุป

  • ใช้ Clone() สร้าง shallow copy ต้องแปลงชนิด (cast)
  • คัดลอกค่า bit ทั้งหมดเป็นอินสแตนซ์ใหม่ แยกจากกัน
  • การเปลี่ยนแปลงต้นฉบับหรือสำเนาไม่ส่งผลต่ออีกฝ่าย