C#中的参考数组?

Pab*_*blo 6 c# arrays

我有字节数组:

byte[] alldata = new byte[1024];
Run Code Online (Sandbox Code Playgroud)

然后我需要将此数据转换为UInt32:

UInt32[] block32 = new UInt32[(int)Math.Ceiling((double)alldata.Length / 4)];
Buffer.BlockCopy(alldata, 0, block32, 0, alldata.Length);
Run Code Online (Sandbox Code Playgroud)

在此之后我需要转换block32byte数组.

现在的问题是我是否能有block32阵只是我的一个32位的参考阵列byte阵列以避免转换为UInt32与回?

Jon*_*eet 12

你的问题并不完全清楚 - 但是引用只是对一个对象的引用,而一个数组对象"知道"它的真实类型......你不能只把它uint[]当作一个对象,byte[]反之亦然.

现在你可以做的是隐藏在另一个对象后面.你可以有一个单字节数组,它在a ByteArrayView和a 之间共享,UInt32ArrayView其中每个类都知道如何处理单个底层字节数组.你必须自己编写这些类 - 我不相信它们存在于现有框架中的任何地方.

你可以创建一个抽象类或接口,这些不同的类也会实现,例如

class ByteArrayView : IArrayView<byte>
class UInt32ArrayView : IArrayView<uint>
Run Code Online (Sandbox Code Playgroud)

(或者只是IList<T>恰当地实施,当然......)