Tag: arrays

强制数组的垃圾收集,C#

我有一个问题,其中一对三维数组分配了大量的内存,程序有时需要用更大/更小的内容替换它们并抛出OutOfMemoryException。 示例:有5个分配的96MBarrays(200x200x200,每个条目中有12个字节的数据),程序需要用210x210x210(111MB)替换它们。 它以类似于这样的方式实现: array1 = new Vector3[210,210,210]; 其中array1-array5与先前使用的字段相同。 这应该将旧数组设置为垃圾收集的候选者,但看起来GC不能足够快地运行并在分配新数组之前分配旧数组 – 这会导致OOM – 而如果它们在新分配之前释放,则空间应该是足够。 我正在寻找的是一种做这样的事情的方法: GC.Collect(array1) // this would set the reference to null and free the memory array1 = new Vector3[210,210,210]; 我不确定完整的垃圾收集是否是一个好主意,因为该代码可能(在某些情况下)需要经常执行。 有没有正确的方法呢?

在c#中的任意起始索引上初始化数组

是否可以在c#中初始化一个数组,例如,subindex 1? 我正在使用Office互操作,并且每个属性都是一个从1开始的对象数组(我假设它最初是在VB.NET中编写的),你不能修改它,你必须设置整个数组才能接受它变化。 作为一种解决方法,我正在克隆原始数组,修改那个数组,并在完成后将其设置为整体。 但是,我想知道是否有可能创建一个新的非零基数组

使用默认构造函数初始化数组

public class Sample { static int count = 0; public int abc; public Sample() { abc = ++Sample.count; } } 我想创建一个上面的类数组,并希望通过调用默认构造函数来初始化数组中的每个元素,这样每个元素都可以有不同的abc 。所以我这样做了: Sample[] samples = new Sample[100]; 但这并不符合我的想法。 这似乎是默认构造函数没有被调用。 如何在创建数组时调用默认构造函数? 我也想知道上面的陈述是做什么的?

将json转换为C#数组?

有谁知道如何将包含json的字符串转换为C#数组。 我有这个从webBrowser读取text / json并将其存储到字符串中。 string docText = webBrowser1.Document.Body.InnerText; 只需要以某种方式将json字符串更改为数组。 一直在看Json.NET,但我不确定这是否是我需要的,因为我不想将数组更改为json; 但反过来说。 谢谢您的帮助!