BitArray.Xor Method
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Namespace: System.Collections
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Function Xor ( _
value As BitArray _
) As BitArray
public BitArray Xor(
BitArray value
)
Parameters
- value
Type: System.Collections.BitArray
The BitArray with which to perform the bitwise exclusive OR operation.
Return Value
Type: System.Collections.BitArray
A 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.
Exceptions
Exception | Condition |
---|---|
ArgumentNullException | value is nulla null reference (Nothing in Visual Basic). |
ArgumentException | value and the current BitArray do not have the same number of elements. |
Remarks
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.
Examples
The following code example shows how to apply XOR to two BitArray instances.
Imports System.Collections
Public Class Example
Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
' 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.
outputBlock.Text &= "Initial values" & vbCrLf
outputBlock.Text &= "myBA1:"
PrintValues(outputBlock, myBA1, 8)
outputBlock.Text &= "myBA2:"
PrintValues(outputBlock, myBA2, 8)
outputBlock.Text &= vbCrLf
outputBlock.Text &= "Result" & vbCrLf
outputBlock.Text &= "XOR:"
PrintValues(outputBlock, myBA1.Xor(myBA2), 8)
outputBlock.Text &= vbCrLf
outputBlock.Text &= "After XOR" & vbCrLf
outputBlock.Text &= "myBA1:"
PrintValues(outputBlock, myBA1, 8)
outputBlock.Text &= "myBA2:"
PrintValues(outputBlock, myBA2, 8)
outputBlock.Text &= vbCrLf
' 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
outputBlock.Text &= "Exception: " + myException.ToString() & vbCrLf
End Try
End Sub
Public Shared Sub PrintValues(ByVal outputBlock As System.Windows.Controls.TextBlock, ByVal myList As IEnumerable, ByVal myWidth As Integer)
Dim i As Integer = myWidth
Dim obj As [Object]
For Each obj In myList
If i <= 0 Then
i = myWidth
outputBlock.Text &= vbCrLf
End If
i -= 1
outputBlock.Text += String.Format("{0,8}", obj)
Next obj
outputBlock.Text &= vbCrLf
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 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()
*/
Version Information
Silverlight
Supported in: 5, 4, 3
Silverlight for Windows Phone
Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0
XNA Framework
Supported in: Xbox 360, Windows Phone OS 7.0
Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.