Freigeben über


BitArray.Xor-Methode

Führt eine bitweise XOR (exklusives Oder)-Operation mit den Elementen im aktuellen BitArray und den entsprechenden Elementen im angegebenen BitArray aus.

Namespace: System.Collections
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Function Xor ( _
    value As BitArray _
) As BitArray
'Usage
Dim instance As BitArray
Dim value As BitArray
Dim returnValue As BitArray

returnValue = instance.Xor(value)
public BitArray Xor (
    BitArray value
)
public:
BitArray^ Xor (
    BitArray^ value
)
public BitArray Xor (
    BitArray value
)
public function Xor (
    value : BitArray
) : BitArray

Parameter

  • value
    Das BitArray, mit dem die bitweise XOR (exklusives Oder)-Operation ausgeführt werden soll.

Rückgabewert

Ein BitArray, das das Ergebnis der bitweisen XOR-Operation für die Elemente im aktuellen BitArray und die entsprechenden Elemente im angegebenen BitArray enthält.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentNullException

value ist NULL (Nothing in Visual Basic).

ArgumentException

value und das aktuelle BitArray enthalten nicht die gleiche Anzahl von Elementen.

Hinweise

Die bitweise XOR-Operation gibt true zurück, wenn genau ein Operand true ist, oder false, wenn beide Operanden über denselben booleschen Wert verfügen.

Diese Methode ist eine O(n)-Operation, wobei n der Count ist.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie XOR auf zwei BitArray-Instanzen angewendet wird.

Imports System
Imports System.Collections
Imports Microsoft.VisualBasic

Public Class SamplesBitArray    
    
    Public Shared Sub Main()
        
        ' Creates and initializes two BitArrays of the same size.
        Dim myBA1 As New BitArray(4)
        Dim myBA2 As New BitArray(4)
        myBA1(0) = False
        myBA1(1) = False
        myBA1(2) = True
        myBA1(3) = True
        myBA2(0) = False
        myBA2(2) = False
        myBA2(1) = True
        myBA2(3) = True
        
        ' Performs a bitwise XOR operation between BitArray instances of the same size.
        Console.WriteLine("Initial values")
        Console.Write("myBA1:")
        PrintValues(myBA1, 8)
        Console.Write("myBA2:")
        PrintValues(myBA2, 8)
        Console.WriteLine()
        
        Console.WriteLine("Result")
        Console.Write("XOR:")
        PrintValues(myBA1.Xor(myBA2), 8)
        Console.WriteLine()
        
        Console.WriteLine("After XOR")
        Console.Write("myBA1:")
        PrintValues(myBA1, 8)
        Console.Write("myBA2:")
        PrintValues(myBA2, 8)
        Console.WriteLine()
        
        ' Performing XOR between BitArray instances of different sizes returns an exception.
        Try
            Dim myBA3 As New BitArray(8)
            myBA3(0) = False
            myBA3(1) = False
            myBA3(2) = False
            myBA3(3) = False
            myBA3(4) = True
            myBA3(5) = True
            myBA3(6) = True
            myBA3(7) = True
            myBA1.Xor(myBA3)
        Catch myException As Exception
            Console.WriteLine("Exception: " + myException.ToString())
        End Try
    End Sub
    
    Public Shared Sub PrintValues(myList As IEnumerable, myWidth As Integer)
        Dim i As Integer = myWidth
        Dim obj As [Object]
        For Each obj In  myList
            If i <= 0 Then
                i = myWidth
                Console.WriteLine()
            End If
            i -= 1
            Console.Write("{0,8}", obj)
        Next obj
        Console.WriteLine()
    End Sub 'PrintValues

End Class


' This code produces the following output.
' 
' Initial values
' myBA1:   False   False    True    True
' myBA2:   False    True   False    True
' 
' Result
' XOR:   False    True    True   False
' 
' After XOR
' myBA1:   False    True    True   False
' myBA2:   False    True   False    True
' 
' Exception: System.ArgumentException: Array lengths must be the same.
'    at System.Collections.BitArray.Xor(BitArray value)
'    at SamplesBitArray.Main()
using System;
using System.Collections;
public class SamplesBitArray  {

   public static void Main()  {

      // Creates and initializes two BitArrays of the same size.
      BitArray myBA1 = new BitArray( 4 );
      BitArray myBA2 = new BitArray( 4 );
      myBA1[0] = myBA1[1] = false;
      myBA1[2] = myBA1[3] = true;
      myBA2[0] = myBA2[2] = false;
      myBA2[1] = myBA2[3] = true;

      // Performs a bitwise XOR operation between BitArray instances of the same size.
      Console.WriteLine( "Initial values" );
      Console.Write( "myBA1:" );
      PrintValues( myBA1, 8 );
      Console.Write( "myBA2:" );
      PrintValues( myBA2, 8 );
      Console.WriteLine();

      Console.WriteLine( "Result" );
      Console.Write( "XOR:" );
      PrintValues( myBA1.Xor( myBA2 ), 8 );
      Console.WriteLine();

      Console.WriteLine( "After XOR" );
      Console.Write( "myBA1:" );
      PrintValues( myBA1, 8 );
      Console.Write( "myBA2:" );
      PrintValues( myBA2, 8 );
      Console.WriteLine();

      // Performing XOR between BitArray instances of different sizes returns an exception.
      try  {
         BitArray myBA3 = new BitArray( 8 );
         myBA3[0] = myBA3[1] = myBA3[2] = myBA3[3] = false;
         myBA3[4] = myBA3[5] = myBA3[6] = myBA3[7] = true;
         myBA1.Xor( myBA3 );
      } catch ( Exception myException )  {
         Console.WriteLine("Exception: " + myException.ToString());
      }
   }


   public static void PrintValues( IEnumerable myList, int myWidth )  {
      int i = myWidth;
      foreach ( Object obj in myList ) {
         if ( i <= 0 )  {
            i = myWidth;
            Console.WriteLine();
         }
         i--;
         Console.Write( "{0,8}", obj );
      }
      Console.WriteLine();
   }

}


/* 
This code produces the following output.

Initial values
myBA1:   False   False    True    True
myBA2:   False    True   False    True

Result
XOR:   False    True    True   False

After XOR
myBA1:   False    True    True   False
myBA2:   False    True   False    True

Exception: System.ArgumentException: Array lengths must be the same.
   at System.Collections.BitArray.Xor(BitArray value)
   at SamplesBitArray.Main()

*/ 
using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myList, int myWidth );
int main()
{
   
   // Creates and initializes two BitArrays of the same size.
   BitArray^ myBA1 = gcnew BitArray( 4 );
   BitArray^ myBA2 = gcnew BitArray( 4 );
   myBA1[ 0 ] = false;
   myBA1[ 1 ] = false;
   myBA1[ 2 ] = true;
   myBA1[ 3 ] = true;
   myBA2[ 0 ] = false;
   myBA2[ 1 ] = true;
   myBA2[ 2 ] = false;
   myBA2[ 3 ] = true;
   
   // Performs a bitwise XOR operation between BitArray instances of the same size.
   Console::WriteLine( "Initial values" );
   Console::Write( "myBA1:" );
   PrintValues( myBA1, 8 );
   Console::Write( "myBA2:" );
   PrintValues( myBA2, 8 );
   Console::WriteLine();
   Console::WriteLine( "Result" );
   Console::Write( "XOR:" );
   PrintValues( myBA1->Xor( myBA2 ), 8 );
   Console::WriteLine();
   Console::WriteLine( "After XOR" );
   Console::Write( "myBA1:" );
   PrintValues( myBA1, 8 );
   Console::Write( "myBA2:" );
   PrintValues( myBA2, 8 );
   Console::WriteLine();
   
   // Performing XOR between BitArray instances of different sizes returns an exception.
   try
   {
      BitArray^ myBA3 = gcnew BitArray( 8 );
      myBA3[ 0 ] = false;
      myBA3[ 1 ] = false;
      myBA3[ 2 ] = false;
      myBA3[ 3 ] = false;
      myBA3[ 4 ] = true;
      myBA3[ 5 ] = true;
      myBA3[ 6 ] = true;
      myBA3[ 7 ] = true;
      myBA1->Xor( myBA3 );
   }
   catch ( Exception^ myException ) 
   {
      Console::WriteLine( "Exception: {0}", myException );
   }

}

void PrintValues( IEnumerable^ myList, int myWidth )
{
   int i = myWidth;
   IEnumerator^ myEnum = myList->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Object^ obj = safe_cast<Object^>(myEnum->Current);
      if ( i <= 0 )
      {
         i = myWidth;
         Console::WriteLine();
      }

      i--;
      Console::Write( "{0,8}", obj );
   }

   Console::WriteLine();
}

/* 
 This code produces the following output.
 
 Initial values
 myBA1:   False   False    True    True
 myBA2:   False    True   False    True

 Result
 XOR:   False    True    True   False

 After XOR
 myBA1:   False    True    True   False
 myBA2:   False    True   False    True

 Exception: System.ArgumentException: Array lengths must be the same.
    at System.Collections.BitArray.Xor(BitArray value)
    at SamplesBitArray.Main()

 */
import System.*;
import System.Collections.*;

public class SamplesBitArray
{
    public static void main(String[] args)
    {
        // Creates and initializes two BitArrays of the same size.
        BitArray myBA1 = new BitArray(4);
        BitArray myBA2 = new BitArray(4);

        myBA1.set_Item(0, false);
        myBA1.set_Item(1, false);
        myBA1.set_Item(2, true);
        myBA1.set_Item(3, true);
        myBA2.set_Item(0, false);
        myBA2.set_Item(2, false);
        myBA2.set_Item(1, true);
        myBA2.set_Item(3, true);

        // Performs a bitwise XOR operation between BitArray instances of the 
        // same size.
        Console.WriteLine("Initial values");
        Console.Write("myBA1:");
        PrintValues(myBA1, 8);
        Console.Write("myBA2:");
        PrintValues(myBA2, 8);
        Console.WriteLine();

        Console.WriteLine("Result");
        Console.Write("XOR:");
        PrintValues(myBA1.Xor(myBA2), 8);
        Console.WriteLine();

        Console.WriteLine("After XOR");
        Console.Write("myBA1:");
        PrintValues(myBA1, 8);
        Console.Write("myBA2:");
        PrintValues(myBA2, 8);
        Console.WriteLine();

        // Performing XOR between BitArray instances of different sizes 
        // returns an exception.
        try {
            BitArray myBA3 = new BitArray(8);

            myBA3.set_Item(0, false);
            myBA3.set_Item(1, false);
            myBA3.set_Item(2, false);
            myBA3.set_Item(3, false);
            myBA3.set_Item(4, true);
            myBA3.set_Item(5, true);
            myBA3.set_Item(6, true);
            myBA3.set_Item(7, true);
            myBA1.Xor(myBA3);
        }
        catch (System.Exception myException) {
            Console.WriteLine("Exception: " + myException.ToString());
        }
    } //main

    public static void PrintValues(IEnumerable myList, int myWidth)
    {
        int i = myWidth;
        IEnumerator objMyEnum  = myList.GetEnumerator();
        while (objMyEnum.MoveNext()) {
            Object obj = objMyEnum.get_Current();
            if (i <= 0) {
                i = myWidth;
                Console.WriteLine();
            }
            i--;
            Console.Write("{0,8}", obj);
        }
        Console.WriteLine();
    } //PrintValues
} //SamplesBitArray 

/* 
 This code produces the following output.
 
 Initial values
 myBA1:   False   False    True    True
 myBA2:   False    True   False    True

 Result
 XOR:   False    True    True   False

 After XOR
 myBA1:   False    True    True   False
 myBA2:   False    True   False    True

 Exception: System.ArgumentException: Array lengths must be the same.
    at System.Collections.BitArray.Xor(BitArray value)
    at SamplesBitArray.main(String[] args)

 */

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

BitArray-Klasse
BitArray-Member
System.Collections-Namespace