BitArray.Or 方法

对当前 BitArray 中的元素和指定的 BitArray 中的相应元素执行按位“或”运算。

**命名空间:**System.Collections
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
Public Function Or ( _
    value As BitArray _
) As BitArray
用法
Dim instance As BitArray
Dim value As BitArray
Dim returnValue As BitArray

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

参数

  • value
    要对其执行按位“或”运算的 BitArray

返回值

BitArray,包含对当前 BitArray 中的元素和指定的 BitArray 中的相应元素执行按位“或”运算的结果。

异常

异常类型 条件

ArgumentNullException

value 为 空引用(在 Visual Basic 中为 Nothing)。

ArgumentException

value 和当前 BitArray 的元素数不同。

备注

如果一个或两个操作数为 true,则按位“或”运算返回 true;如果两个操作数都为 false,则按位“或”运算返回 false

此方法的运算复杂度为 O(n),其中 n 是 Count

示例

下面的代码示例演示如何将 OR 应用于两个 BitArray 实例。

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 OR 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("OR:")
        PrintValues(myBA1.Or(myBA2), 8)
        Console.WriteLine()
        
        Console.WriteLine("After OR")
        Console.Write("myBA1:")
        PrintValues(myBA1, 8)
        Console.Write("myBA2:")
        PrintValues(myBA2, 8)
        Console.WriteLine()
        
        ' Performing OR 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.Or(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
' OR:   False    True    True    True
' 
' After OR
' myBA1:   False    True    True    True
' myBA2:   False    True   False    True
' 
' Exception: System.ArgumentException: Array lengths must be the same.
'    at System.Collections.BitArray.Or(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 OR 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( "OR:" );
      PrintValues( myBA1.Or( myBA2 ), 8 );
      Console.WriteLine();

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

      // Performing OR 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.Or( 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
OR:   False    True    True    True

After OR
myBA1:   False    True    True    True
myBA2:   False    True   False    True

Exception: System.ArgumentException: Array lengths must be the same.
   at System.Collections.BitArray.Or(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 OR 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( "OR:" );
   PrintValues( myBA1->Or( myBA2 ), 8 );
   Console::WriteLine();
   Console::WriteLine( "After OR" );
   Console::Write( "myBA1:" );
   PrintValues( myBA1, 8 );
   Console::Write( "myBA2:" );
   PrintValues( myBA2, 8 );
   Console::WriteLine();
   
   // Performing OR 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->Or( 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
 OR:   False    True    True    True

 After OR
 myBA1:   False    True    True    True
 myBA2:   False    True   False    True

 Exception: System.ArgumentException: Array lengths must be the same.
    at System.Collections.BitArray.Or(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 OR 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("OR:");
        PrintValues(myBA1.Or(myBA2), 8);
        Console.WriteLine();
        Console.WriteLine("After OR");
        Console.Write("myBA1:");
        PrintValues(myBA1, 8);
        Console.Write("myBA2:");
        PrintValues(myBA2, 8);
        Console.WriteLine();

        // Performing OR 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.Or(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
 OR:   False    True    True    True

 After OR
 myBA1:   False    True    True    True
 myBA2:   False    True   False    True

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

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

BitArray 类
BitArray 成员
System.Collections 命名空间