C# 具有相同内存的多个数组

问题描述 投票:0回答:1

在 C# 中是否可以在同一内存位置拥有多个不同类型的数组? 我有一个很大的浮点数组,我需要在尽可能短的时间内将其转换为字节数组。 我的想法是有一个指向浮点数组开头的字节数组,这样如果我更改浮点数组,字节数组也会自动更改,但我还没有找到解决方案。 这在 C# 中是否可能,还是我必须找到另一种方法?

c# arrays pointers
1个回答
0
投票

您无法使用 实际数组 做到这一点 - 但如果您愿意将其与

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]);
© www.soinside.com 2019 - 2024. All rights reserved.