在 C# 中如何检索单个元素的大小? Array
Int16[] a1 = new Int16[1024];
Int16[] a2 = new byte[1024];
Array array = ... // (either a1 or a2)
int elementSizeInBytes = array.____?
sizeof 将不起作用,因为 sizeof 是一个编译时运算符——当然,sizeof(array)
甚至sizeof(array[0])
不编译。
获取元素的数量很简单:
int numElements = array.Length;
似乎没有返回元素大小的方法。然后,它似乎可以从分配给数组/array.Length 的总空间中计算出来。但是如何获取 Array 实例使用的总字节数并不明显。
示例用法:
这个问题是一个普遍的问题,但我目前尝试使用它的方法是将数组缓冲区的内容复制到 WriteableBitmap:
private void copyPixels2Bitmap(Array pixels, WriteableBitmap bitmap)
{
int elementSize = pixels.GetValue(0).GetType().___?;
bitmap.WritePixels(new Int32Rect(0, 0, bitmap.PixelWidth, bitmap.PixelHeight),
pixels, bitmap.PixelWidth * elementSize, 0);
}