Buffer Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Verändert Arrays von primitiven Typen.
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
- Vererbung
-
Buffer
- Attribute
Beispiele
Im folgenden Codebeispiel wird die Verwendung mehrerer Buffer
Klassenmethoden veranschaulicht.
// 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
*/
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
Hinweise
Buffer Wirkt sich nur auf Arrays von Grundtypen aus; Diese Klasse gilt nicht für Objekte. Jeder Grundtyp wird als Eine Reihe von Bytes behandelt, ohne dass es sich um ein Verhalten oder eine Einschränkung handelt, die dem Grundtyp zugeordnet ist.
Buffer stellt Methoden zum Kopieren von Bytes aus einem Array von Grundtypen in ein anderes Array von Grundtypen bereit, ruft ein Byte aus einem Array ab, legt ein Byte in einem Array fest und ruft die Länge eines Arrays ab. Diese Klasse bietet eine bessere Leistung zum Bearbeiten von Grundtypen als ähnliche Methoden in der System.Array Klasse.
Buffergilt für die folgenden Grundtypen: Boolean, SByteUInt16Int32Int16UInt32Int64ByteCharIntPtrUIntPtrUInt64Singleund .Double
Methoden
BlockCopy(Array, Int32, Array, Int32, Int32) |
Kopiert eine angegebene Anzahl von Bytes aus einem Quellarray in ein Zielarray, jeweils beginnend bei einem bestimmten Offset. |
ByteLength(Array) |
Gibt die Anzahl der Bytes im angegebenen Array zurück. |
GetByte(Array, Int32) |
Ruft das Byte an der angegebenen Position im angegebenen Array ab. |
MemoryCopy(Void*, Void*, Int64, Int64) |
Kopiert eine als Long Integer-Wert angegebene Anzahl von Bytes aus einer Speicheradresse in eine andere Speicheradresse. Diese API ist nicht CLS-kompatibel. |
MemoryCopy(Void*, Void*, UInt64, UInt64) |
Kopiert eine als Unsigned Long Integer-Wert angegebene Anzahl von Bytes aus einer Speicheradresse in eine andere Speicheradresse. Diese API ist nicht CLS-kompatibel. |
SetByte(Array, Int32, Byte) |
Weist einem Byte an einer bestimmten Position eines angegebenen Arrays einen bestimmten Wert zu. |