BitArray.Xor Method
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Performs the bitwise exclusive OR operation on the elements in the current BitArray against the corresponding elements in the specified BitArray.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- value
- Type: System.Collections.BitArray
The BitArray with which to perform the bitwise exclusive OR operation.
Return Value
Type: System.Collections.BitArrayA BitArray containing the result of the bitwise exclusive OR operation on the elements in the current BitArray against the corresponding elements in the specified BitArray.
| 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 apply XOR to two BitArray instances.
using System; using System.Collections; public class Example { public static void Demo(System.Windows.Controls.TextBlock outputBlock) { // 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. outputBlock.Text += "Initial values" + "\n"; outputBlock.Text += "myBA1:"; PrintValues(outputBlock, myBA1, 8); outputBlock.Text += "myBA2:"; PrintValues(outputBlock, myBA2, 8); outputBlock.Text += "\n"; outputBlock.Text += "Result" + "\n"; outputBlock.Text += "XOR:"; PrintValues(outputBlock, myBA1.Xor(myBA2), 8); outputBlock.Text += "\n"; outputBlock.Text += "After XOR" + "\n"; outputBlock.Text += "myBA1:"; PrintValues(outputBlock, myBA1, 8); outputBlock.Text += "myBA2:"; PrintValues(outputBlock, myBA2, 8); outputBlock.Text += "\n"; // 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) { outputBlock.Text += "Exception: " + myException.ToString() + "\n"; } } public static void PrintValues(System.Windows.Controls.TextBlock outputBlock, IEnumerable myList, int myWidth) { int i = myWidth; foreach (Object obj in myList) { if (i <= 0) { i = myWidth; outputBlock.Text += "\n"; } i--; outputBlock.Text += String.Format("{0,8}", obj); } outputBlock.Text += "\n"; } } /* 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() */