在 C# 中是否可以在同一内存位置拥有多个不同类型的数组? 我有一个很大的浮点数组,我需要在尽可能短的时间内将其转换为字节数组。 我的想法是有一个指向浮点数组开头的字节数组,这样如果我更改浮点数组,字节数组也会自动更改,但我还没有找到解决方案。 这在 C# 中是否可能,还是我必须找到另一种方法?
您无法使用 实际数组 做到这一点 - 但如果您愿意将其与
Span<T>
一起使用,那么 MemoryMarshal
可能就是您正在寻找的。 (并且您仍然可以使用数组作为底层存储。)
例如:
using System.Runtime.InteropServices;
Span<float> floats = new float[3];
Span<byte> bytes = MemoryMarshal.AsBytes(floats);
Console.WriteLine(bytes[0]);
floats[0] = 1.234f;
Console.WriteLine(bytes[0]);