C# 中的 Buffer.BlockCopy(Array, Int32, Array, Int32, Int32) 方法

2024 年 8 月 29 日 | 5 分钟阅读

在本文中,我们将讨论 C# 中的 Buffer.BlockCopy() 方法,包括其语法、参数和示例。

什么是 Buffer.BlockCopy() 方法?

C# 中的 Buffer.BlockCopy() 方法提供了一种强大而快速的技术,用于对数组执行低级、面向内存的操作。此方法属于 System.namespace。它广泛用于需要直接内存操作的应用程序,例如图形编程、网络协议或处理二进制数据。

语法

它具有以下语法:

参数

srcs: 这是源缓冲区。

srcOffsetValue: 这是 src 的基于零的字节偏移量。

DST: 这是缓冲区的终点。

dstOffset: 这是 dst 的基于零的字节偏移量。

c: 要复制的总字节数。

Exception

  • 如果 src 或 dst 为 null,则会发生 ArgumentNullException
  • 如果 src 或 dst 不是基本数组,如果 src 包含的字节数少于 srcOffset 加上 count,或者如果 dst 中的字节数少于 dstOffset+count,则会发生 ArgumentException
  • 如果 srcOffset、dstOffset 或 count 小于零,则会抛出 ArgumentOutOfRangeException

示例 1

让我们通过一个示例来说明 C# 中 Buffer.BlockCopy() 方法的用法。

文件名:BufferMethod.cs

输出

Initial Array values:
Array elements in the hexadecimal form:
srcs:000000000000000F  0000000000000010  0000000000000011  0000000000000012 
dests: 0000000000000011  0000000000000012  000000000000000E  0000000000000014 
Individual bytes:
srcs:0F 00 00 00 00 00 00 00 10 00 00 00 0000 00 00 11 00 00 00 00 00 00 00 12 00 00 00 00 00 00 00
dests: 11 00 00 00 00 00 00 00 12 00 00 00 00 00 00 00 0E 00 00 00 00 00 00 00 14 00 00 00 00 00 00 00
Array after operation:
Array element in hexadecimal form:
srcs: 000000000000000F  0000000000000010  0000000000000011  0000000000000012 
dests: 0000000000000011  0000000010000000  000000000000000E  0000000000000014 
Individual bytes:
srcs: 0F 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 1100 00 00 00 00 00 00 12 00 00 00 00 00 00 00
dests: 11 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 0E 00 00 00 00 00 00 00 14 00 00 00 0000 00 00

示例 2

让我们通过另一个示例来说明 C# 中 Buffer.BlockCopy() 方法的用法。

文件名:Example2.cs

输出

Initial Array values:
Array element in hexadecimal form:
src:000000000000000F  0000000000000010  0000000000000011  0000000000000028 dest: 0000000000000011  000000000000004E  0000000000000013  0000000000000028 
Individual bytes:
  src: 0F 00 00 00 00 00 00 00 10 00 00 00 00 00 00 0011 00 00 00 00 00 00 00 28 00 00 00 00 00 00 00
 dest: 11 0000 00 00 00 00 00 4E 00 00 00 00 00 00 00 13 00 00 00 00 0000 00 28 00 00 00 00 00 00 00
src and dst are null:
Exception Thrown: System.ArgumentNullException