Buffer Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Manipuluje tablicami typów pierwotnych.
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
- Dziedziczenie
-
Buffer
- Atrybuty
Przykłady
Poniższy przykład kodu ilustruje użycie kilku Buffer
metod klas.
// 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
Uwagi
Buffer wpływa tylko na tablice typów pierwotnych; ta klasa nie ma zastosowania do obiektów. Każdy typ pierwotny jest traktowany jako seria bajtów bez względu na jakiekolwiek zachowanie lub ograniczenie skojarzone z typem pierwotnym.
Buffer Udostępnia metody kopiowania bajtów z jednej tablicy typów pierwotnych do innej tablicy typów pierwotnych, uzyskiwania bajtu z tablicy, ustawiania bajtu w tablicy i uzyskiwania długości tablicy. Ta klasa zapewnia lepszą wydajność manipulowania typami pierwotnymi niż podobne metody w System.Array klasie.
Bufferma zastosowanie do następujących typów pierwotnych: Boolean, Char, , ByteInt16Int32UInt32Int64UInt16SByteIntPtrUIntPtrUInt64Singlei .Double
Metody
BlockCopy(Array, Int32, Array, Int32, Int32) |
Kopiuje określoną liczbę bajtów z tablicy źródłowej rozpoczynającej się od określonego przesunięcia do tablicy docelowej rozpoczynającej się od określonego przesunięcia. |
ByteLength(Array) |
Zwraca liczbę bajtów w określonej tablicy. |
GetByte(Array, Int32) |
Pobiera bajt w określonej lokalizacji w określonej tablicy. |
MemoryCopy(Void*, Void*, Int64, Int64) |
Kopiuje liczbę bajtów określonych jako długa wartość całkowita z jednego adresu w pamięci do innego. Ten interfejs API nie jest zgodny ze specyfikacją CLS. |
MemoryCopy(Void*, Void*, UInt64, UInt64) |
Kopiuje liczbę bajtów określonych jako wartość niepodpisanej długiej liczby całkowitej z jednego adresu w pamięci do innego. Ten interfejs API nie jest zgodny ze specyfikacją CLS. |
SetByte(Array, Int32, Byte) |
Przypisuje określoną wartość do bajtu w określonej lokalizacji w określonej tablicy. |