Buffer Třída

Definice

Manipuluje s poli primitivních typů.

public ref class Buffer abstract sealed
public ref class Buffer sealed
public static class Buffer
public sealed class Buffer
[System.Runtime.InteropServices.ComVisible(true)]
public static class Buffer
type Buffer = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type Buffer = class
Public Class Buffer
Public NotInheritable Class Buffer
Dědičnost
Buffer
Atributy

Příklady

Následující příklad kódu ilustruje použití několika Buffer metod třídy.

// 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
*/
open System

// Display the array elements from right to left in hexadecimal.
let displayArray (arr: int16 []) =
    printf "  arr:"
    for i = arr.Length - 1 downto 0 do
        printf $" {arr[i]:X4}"
    printfn ""

// This array is to be modified and displayed.
let arr = 
    [| 258s; 259s; 260s; 261s; 262s; 263s; 264s
       265s; 266s; 267s; 268s; 269s; 270s; 271s |]

printfn "This example of the Buffer class methods generates the following output.\nNote: The array is displayed from right to left.\n"
printfn "Initial values of array:\n"

// Display the initial array values and ByteLength.
displayArray arr
printfn $"\nBuffer.ByteLength(arr): {Buffer.ByteLength arr}"

// Copy a region of the array; set a byte within the array.
printfn "\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, 170uy)

// Display the array and a byte within the array.
printfn "Final values of array:\n"
displayArray arr
printfn $"\nBuffer.GetByte(arr, 26): {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

Poznámky

Buffer má vliv pouze na pole primitivních typů; tato třída se nevztahuje na objekty. Každý primitivní typ je považován za řadu bajtů bez ohledu na jakékoli chování nebo omezení spojené s primitivním typem.

Buffer poskytuje metody kopírování bajtů z jednoho pole primitivních typů do jiné pole primitivních typů, získání bajtu z pole, nastavení bajtu v poli a získání délky pole. Tato třída poskytuje lepší výkon pro manipulaci s primitivními typy než podobné metody ve System.Array třídě.

Bufferse vztahuje na následující primitivní typy: , , , , , , , , Boolean, , Char, SByteByte, Int16, UInt16a Int32. UInt32Int64UInt64IntPtrUIntPtrSingleDouble

Metody

Name Description
BlockCopy(Array, Int32, Array, Int32, Int32)

Zkopíruje zadaný počet bajtů ze zdrojového pole začínající určitým posunem na cílovou matici počínaje určitým posunem.

ByteLength(Array)

Vrátí počet bajtů v zadaném poli.

GetByte(Array, Int32)

Načte bajt v zadaném umístění v zadaném poli.

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

Zkopíruje počet bajtů zadaných jako dlouhá celočíselná hodnota z jedné adresy v paměti do jiné.

Toto rozhraní API neodpovídá specifikaci CLS.

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

Zkopíruje počet bajtů zadaných jako celočíselná hodnota bez znaménka z jedné adresy v paměti do jiné.

Toto rozhraní API neodpovídá specifikaci CLS.

SetByte(Array, Int32, Byte)

Přiřadí zadanou hodnotu bajtu v určitém umístění v zadaném poli.

Platí pro