C# | Cómo crear una copia superficial del BitArray

El método BitArray.Clone se utiliza para crear una copia superficial del BitArray. Este método solo copia los elementos de la colección, ya sean tipos de referencia o tipos de valor, pero no copia los objetos a los que hacen referencia las referencias.
Sintaxis: 
 

public object Clone ();

Ejemplo 1: Aquí creamos una array de tipo byte. Luego declare un objeto B1 de tipo BitArray e inicialícelo usando la array de bytes creada antes. Declare otro objeto B2 de tipo BitArray que se usará para almacenar el clon de B1 . La instrucción B1.Clone devuelve la copia superficial de B1 , que es del tipo System.Collections . Por lo tanto, conviértalo explícitamente a BitArray antes de almacenarlo en el objeto B2 . Y finalmente, muestre el BitArray clonado.
 

csharp

// C# program to demonstrate the
// BitArray.Clone Method
using System;
using System.Collections;
 
class GFG {
     
    static void Main(string[] args)
    {
        // Declaring a byte array
        byte[] ByteArray = new byte[] {1, 3};
 
        // Declaring a BitArray object
        // Initializing to the byte array
        BitArray B1 = new BitArray(ByteArray);
         
        // Declaring a new BitArray object
        BitArray B2 = new BitArray(4);
 
        // Using the BitArray.Clone method
        B2 = (BitArray)B1.Clone();
 
        // Displaying the length of the BitArray
        Console.WriteLine("Length of B2: {0}", B2.Length);
         
        Console.WriteLine("\nB2 Contains:");
 
        // To display the values
        // of BitArray object B2
        foreach(Object item in B2)
        {
            Console.WriteLine(item);
        }
 
    }
}
Producción: 

Length of B2: 16

B2 Contains:
True
False
False
False
False
False
False
False
True
True
False
False
False
False
False
False

 

Ejemplo 2: una copia superficial solo copia el contenido de BitArray y no las referencias de objetos, cualquier cambio realizado en B2 solo actualizará esos cambios en B2 y no en B1.
 

csharp

// C#Program to show changes in clone
// don't affect the original BitArray
using System;
using System.Collections;
 
class GFG {
     
    static void Main(string[] args)
    {
        // Declaring a bool array
        bool[] BooleanArray = new bool[] {true,
                          false, true, false };
 
        // Declaring an object B1 of BitArray
        // Initialising with the bool array
        BitArray B1 = new BitArray(BooleanArray);
         
        int i;
 
        // Declaring object B2 of BitArray
        BitArray B2 = new BitArray(4);
 
        // Using the BitArray.Clone method
        B2 = (BitArray)B1.Clone();
 
        i = 4;
 
        // Displaying elements of B2
        Console.WriteLine("B2 Before Making any changes:");
         
        foreach(Object item in B2)
        {
            if (i <= 0)
            {
                Console.WriteLine();
                i = 6;
            }
            i--;
            Console.Write("{0, 4} ", item);
        }
 
        // Updating elements of B2
        // at index 0 and 1
        B2[0] = false;
        B2[1] = true;
 
        i = 4;
 
        // Displaying elements
        // of B2 after updating
        Console.WriteLine("\n\nB2 After changes:");
         
        foreach(Object item in B2)
        {
            if (i <= 0)
            {
                Console.WriteLine();
                i = 6;
            }
            i--;
            Console.Write("{0, 4} ", item);
        }
 
        // Displaying elements of B1
        Console.WriteLine("\n\nB1 After Changes:");
         
        i = 4;
         
        foreach(Object item in B1)
        {
            if (i <= 0)
            {
                Console.WriteLine();
                i = 6;
            }
            i--;
            Console.Write("{0, 4} ", item);
        }
 
    }
}
Producción: 

B2 Before Making any changes:
True False True False 

B2 After changes:
False True True False 

B1 After Changes:
True False True False

 

Referencia: 

Publicación traducida automáticamente

Artículo escrito por ManasiKirloskar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *