Buffer Buffer Buffer Buffer Class

定义

操作基元类型的数组。Manipulates arrays of primitive types.

public ref class Buffer abstract sealed
[System.Runtime.InteropServices.ComVisible(true)]
public static class Buffer
type Buffer = class
Public Class Buffer
继承
BufferBufferBufferBuffer
属性

示例

下面的代码示例演示如何使用多个Buffer类方法。The following code example illustrates the use of several Buffer class methods.

// Example of the Buffer class methods.
using namespace System;

// Display the array elements from right to left in hexadecimal.
void DisplayArray( array<short>^arr )
{
   Console::Write( "  arr:" );
   for ( int loopX = arr->Length - 1; loopX >= 0; loopX-- )
      Console::Write( " {0:X4}", arr[ loopX ] );
   Console::WriteLine();
}

int main()
{
   
   // This array is to be modified and displayed.
   array<short>^arr = {258,259,260,261,262,263,264,265,266,267,268,269,270,271};
   Console::WriteLine( "This example of the Buffer class "
   "methods generates the following output.\n"
   "Note: The array is displayed from right to left.\n" );
   Console::WriteLine( "Initial values of array:\n" );
   
   // Display the initial array values and ByteLength.
   DisplayArray( arr );
   Console::WriteLine( "\nBuffer::ByteLength( arr ): {0}", Buffer::ByteLength( arr ) );
   
   // Copy a region of the array; set a byte within the array.
   Console::WriteLine( "\nCall these methods: \n"
   "  Buffer::BlockCopy( arr, 5, arr, 16, 9 ),\n"
   "  Buffer::SetByte( arr, 7, 170 ).\n" );
   Buffer::BlockCopy( arr, 5, arr, 16, 9 );
   Buffer::SetByte( arr, 7, 170 );
   
   // Display the array and a byte within the array.
   Console::WriteLine( "Final values of array:\n" );
   DisplayArray( arr );
   Console::WriteLine( "\nBuffer::GetByte( arr, 26 ): {0}", Buffer::GetByte( arr, 26 ) );
}

/*
This example of the Buffer class methods generates the following output.
Note: The array is displayed from right to left.

Initial values of array:

  arr: 010F 010E 010D 010C 010B 010A 0109 0108 0107 0106 0105 0104 0103 0102

Buffer::ByteLength( arr ): 28

Call these methods:
  Buffer::BlockCopy( arr, 5, arr, 16, 9 ),
  Buffer::SetByte( arr, 7, 170 ).

Final values of array:

  arr: 010F 0101 0801 0701 0601 0501 0109 0108 0107 0106 AA05 0104 0103 0102

Buffer::GetByte( arr, 26 ): 15
*/
// Example of the Buffer class methods.
using System;

class BufferClassDemo
{
    // Display the array elements from right to left in hexadecimal.
    public static void DisplayArray( short[ ] arr )
    {
        Console.Write( "  arr:" );
        for( int loopX = arr.Length - 1; loopX >= 0; loopX-- )
            Console.Write( " {0:X4}", arr[ loopX ] );
        Console.WriteLine( );
    }

    public static void Main( )
    {
        // This array is to be modified and displayed.
        short[ ] arr = { 258, 259, 260, 261, 262, 263, 264, 
                         265, 266, 267, 268, 269, 270, 271 };

        Console.WriteLine( "This example of the Buffer class " +
            "methods generates the following output.\n" +
            "Note: The array is displayed from right to left.\n" );
        Console.WriteLine( "Initial values of array:\n" );

        // Display the initial array values and ByteLength.
        DisplayArray( arr );
        Console.WriteLine( "\nBuffer.ByteLength( arr ): {0}", 
            Buffer.ByteLength( arr ) );

        // Copy a region of the array; set a byte within the array.
        Console.WriteLine( "\nCall these methods: \n" +
            "  Buffer.BlockCopy( arr, 5, arr, 16, 9 ),\n" +
            "  Buffer.SetByte( arr, 7, 170 ).\n" );

        Buffer.BlockCopy( arr, 5, arr, 16, 9 );
        Buffer.SetByte( arr, 7, 170 );

        // Display the array and a byte within the array.
        Console.WriteLine( "Final values of array:\n" );
        DisplayArray( arr );
        Console.WriteLine( "\nBuffer.GetByte( arr, 26 ): {0}", 
            Buffer.GetByte( arr, 26 ) );
    }
}

/*
This example of the Buffer class methods generates the following output.
Note: The array is displayed from right to left.

Initial values of array:

  arr: 010F 010E 010D 010C 010B 010A 0109 0108 0107 0106 0105 0104 0103 0102

Buffer.ByteLength( arr ): 28

Call these methods:
  Buffer.BlockCopy( arr, 5, arr, 16, 9 ),
  Buffer.SetByte( arr, 7, 170 ).

Final values of array:

  arr: 010F 0101 0801 0701 0601 0501 0109 0108 0107 0106 AA05 0104 0103 0102

Buffer.GetByte( arr, 26 ): 15
*/
' Example of the Buffer class methods.
Module BufferClassDemo

    ' Display the array elements from right to left in hexadecimal.
    Sub DisplayArray( arr( ) As Short )

        Console.Write( "  arr:" )
        Dim loopX     As Integer
        For loopX = arr.Length - 1 To 0 Step -1
            Console.Write( " {0:X4}", arr( loopX ) )
        Next loopX
        Console.WriteLine( )
    End Sub

    Sub Main( )

        ' This array is to be modified and displayed.
        Dim arr( ) As Short = { 258, 259, 260, 261, 262, 263, 264, _
                                265, 266, 267, 268, 269, 270, 271 }
        Console.WriteLine( _
            "This example of the Buffer class methods generates " & _
            "the following output." & vbCrLf & "Note: The " & _
            "array is displayed from right to left." & vbCrLf )
        Console.WriteLine( "Initial values of array:" & vbCrLf )

        ' Display the initial array values and ByteLength.
        DisplayArray( arr )
        Console.WriteLine( vbCrLf & _
            "Buffer.ByteLength( arr ): {0}", _
            Buffer.ByteLength( arr ) )

        ' Copy a region of the array; set a byte within the array.
        Console.WriteLine( vbCrLf & _
            "Call these methods: " & vbCrLf & _
            "  Buffer.BlockCopy( arr, 5, arr, 16, 9 )," & vbCrLf & _
            "  Buffer.SetByte( arr, 7, 170 )." & vbCrLf )

        Buffer.BlockCopy( arr, 5, arr, 16, 9 )
        Buffer.SetByte( arr, 7, 170 )

        ' Display the array and a byte within the array.
        Console.WriteLine( "Final values of array:" & vbCrLf )
        DisplayArray( arr )
        Console.WriteLine( vbCrLf & _
            "Buffer.GetByte( arr, 26 ): {0}", _
            Buffer.GetByte( arr, 26 ) )
    End Sub 
End Module 

' This example of the Buffer class methods generates the following output.
' Note: The array is displayed from right to left.
' 
' Initial values of array:
' 
'   arr: 010F 010E 010D 010C 010B 010A 0109 0108 0107 0106 0105 0104 0103 0102
' 
' Buffer.ByteLength( arr ): 28
' 
' Call these methods:
'   Buffer.BlockCopy( arr, 5, arr, 16, 9 ),
'   Buffer.SetByte( arr, 7, 170 ).
' 
' Final values of array:
' 
'   arr: 010F 0101 0801 0701 0601 0501 0109 0108 0107 0106 AA05 0104 0103 0102
' 
' Buffer.GetByte( arr, 26 ): 15

注解

Buffer仅影响基元类型的数组;此类不适用于对象。Buffer only affects arrays of primitive types; this class does not apply to objects. 每个基元类型都被视为一系列字节, 而不考虑与基元类型关联的任何行为或限制。Each primitive type is treated as a series of bytes without regard to any behavior or limitation associated with the primitive type.

Buffer提供将字节从一个基元类型数组复制到另一个基元类型数组的方法, 从数组中获取一个字节, 在数组中设置一个字节, 并获取数组的长度。Buffer provides methods to copy bytes from one array of primitive types to another array of primitive types, get a byte from an array, set a byte in an array, and obtain the length of an array. 此类提供更好的性能, 用于处理System.Array类中类似方法之外的基元类型。This class provides better performance for manipulating primitive types than similar methods in the System.Array class.

BufferBoolean适用于以下基元类型:、 UInt16 、、、UInt64Int16 Byte Char SByteUInt32、、、、 Int32 Int64 IntPtrUIntPtrSingle和。DoubleBuffer is applicable to the following primitive types: Boolean, Char, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, IntPtr, UIntPtr, Single, and Double.

方法

BlockCopy(Array, Int32, Array, Int32, Int32) BlockCopy(Array, Int32, Array, Int32, Int32) BlockCopy(Array, Int32, Array, Int32, Int32) BlockCopy(Array, Int32, Array, Int32, Int32)

将指定数目的字节从起始于特定偏移量的源数组复制到起始于特定偏移量的目标数组。Copies a specified number of bytes from a source array starting at a particular offset to a destination array starting at a particular offset.

ByteLength(Array) ByteLength(Array) ByteLength(Array) ByteLength(Array)

返回指定数组中的字节数。Returns the number of bytes in the specified array.

GetByte(Array, Int32) GetByte(Array, Int32) GetByte(Array, Int32) GetByte(Array, Int32)

检索指定数组中指定位置的字节。Retrieves the byte at the specified location in the specified array.

MemoryCopy(Void*, Void*, Int64, Int64) MemoryCopy(Void*, Void*, Int64, Int64) MemoryCopy(Void*, Void*, Int64, Int64) MemoryCopy(Void*, Void*, Int64, Int64)

将指定为长整型值的一些字节从内存中的一个地址复制到另一个地址。Copies a number of bytes specified as a long integer value from one address in memory to another.

此 API 不兼容 CLS。This API is not CLS-compliant.

MemoryCopy(Void*, Void*, UInt64, UInt64) MemoryCopy(Void*, Void*, UInt64, UInt64) MemoryCopy(Void*, Void*, UInt64, UInt64) MemoryCopy(Void*, Void*, UInt64, UInt64)

将指定为无符号长整型值的一些字节从内存中的一个地址复制到另一个地址。Copies a number of bytes specified as an unsigned long integer value from one address in memory to another.

此 API 不兼容 CLS。This API is not CLS-compliant.

SetByte(Array, Int32, Byte) SetByte(Array, Int32, Byte) SetByte(Array, Int32, Byte) SetByte(Array, Int32, Byte)

将指定的值分配给指定数组中特定位置处的字节。Assigns a specified value to a byte at a particular location in a specified array.

适用于