首页 > 解决方案 > 如何在 C# 中将多维数组解释为一维数组,反之亦然

问题描述

我知道已经有一个关于将多维数组转换为一维数组的问题,但是所有的答案都是低效的。所有这些都基于制作数组的副本,这是不必要的。多维数组(非锯齿状)存储在连续的内存块中,因此在该块的一维解释和多维解释之间来回转换不应该涉及复制整个数组,而是应该基本上是免费的。实际上应该可以让两个数组共享相同的内存,这样当一个被更新时,另一个也会更新。

这可以在 C# 中完成吗?

标签: c#arraysmultidimensional-arraytype-conversion

解决方案


你不能。与其他任何东西完全不同的是,数组,就像 .NET 中的许多东西一样,都是对象。这意味着它们有一个对象头,位于用于存储其表示的其他内存之前。

从逻辑上讲,对于两种不同类型的对象,您不能有两个不同的对象标头,占用内存中的相同位置。


推荐阅读