2016-09-14 83 views
0

我遇到了一个有趣的问题。所以我知道C#中的数组是引用类型。我发现我实际上需要它像一个值类型。我有一个C++队列,我从包含byte []参数的C#应用​​程序中提取数据。拉出的数据存储在该变量中,然后将该byte []数组附加到列表中。由于数组是C#中的引用,因此列表中的每个项都将采用最后一次拉取的数据的值。我的第一个想法是对每个数据拉取一个“新”,但这听起来代价高昂,而且编程实践不好。有没有我失踪的解决方法?强制阵列为值类型或解决方法C#

回答

0

如果你想有几个不同的数组,正确的做法是简单地创建多个数组,而不是在你想要多个数组时重新使用一个数组。

要创建一个具有语义的类型,只要您将其分配给另一个变量,就可以复制它的全部数据,这甚至不会节省您创建多个数组的努力,因为当您复制它们。

+0

比方说,我采用这种方法,并有效地对队列中的每次拉取做一个新的。我应该用GC做任何事情还是将它交给CLR来处理?我说的是数组对象吨 – Seapoe

+0

@Seapoe你没有选择任何一种方式。 GC管理托管对象,您正在创建一个托管对象,因此GC将对其进行管理。 – Servy

相关问题