C# 如何仅将阵列的一部分快速复制到另一个阵列?

C# 如何仅将阵列的一部分快速复制到另一个阵列?,c#,.net,arrays,performance,sizeof,C#,.net,Arrays,Performance,Sizeof,我正在写一个高性能的数据结构。我遇到的一个问题是,似乎无论如何都不会只将一个数组的一部分复制到另一个数组(最好尽快)。我也使用泛型,所以我不确定如何使用Buffer.BlockCopy,因为它需要字节地址,而且似乎不可能客观地确定对象的大小。我知道Buffer.BlockCopy在字节级别工作,但它是否也将填充计算为字节 例如: var tmo=new T[5]; var source = new T[10]; for(int i=5;i<source.Length;i++) { tm

我正在写一个高性能的数据结构。我遇到的一个问题是,似乎无论如何都不会只将一个数组的一部分复制到另一个数组(最好尽快)。我也使用泛型,所以我不确定如何使用Buffer.BlockCopy,因为它需要字节地址,而且似乎不可能客观地确定对象的大小。我知道Buffer.BlockCopy在字节级别工作,但它是否也将填充计算为字节

例如:

var tmo=new T[5];
var source = new T[10];
for(int i=5;i<source.Length;i++)
{
  tmp[i-5]=source[i];
}
var tmo=newt[5];
var源=新的T[10];

对于(int i=5;i您可以使用
Array.Copy()


啊!我不知道有一个静态的
Array
helper类。在这里,我想我必须降到IL级别或者其他什么级别,这样才能可靠地计算泛型类型的大小。请参阅和@JimMischel,这是不起作用的。编译器可以添加不会被Marshal.SizeOfAnd反映的填充。这是我的代码不起作用的原因之一使用
Marshal.SizeOf
。相反,它使用MSIL
SizeOf
指令。
Array.Copy(source , 5, tmp, 0, tmp.Length);