BitArray::Xor Method (BitArray^)
Performs the bitwise exclusive OR operation between the elements of the current BitArray object against the corresponding elements in the specified array. The current BitArray object will be modified to store the result of the bitwise exclusive OR operation.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- value
-
Type:
System.Collections::BitArray^
The array with which to perform the bitwise exclusive OR operation.
Return Value
Type: System.Collections::BitArray^An array containing the result of the bitwise exclusive OR operation, which is a reference to the current BitArray object.
| Exception | Condition |
|---|---|
| ArgumentNullException | value is null. |
| ArgumentException | value and the current BitArray do not have the same number of elements. |
The bitwise exclusive OR operation returns true if exactly one operand is true, and returns false if both operands have the same Boolean value.
This method is an O(n) operation, where n is Count.
The following code example shows how to perform the XOR operation between two BitArray objects.
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() */
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1