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.
Imports System
Imports Microsoft.VisualBasic

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.

Buffer применимо для следующих типов-примитивов: Boolean, Char, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, IntPtr, UIntPtr, Single, и Double.Buffer 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.

Применяется к