2010-02-23 75 views
0

我有一个数组x大小的对象(1和100之间),我想增加大小为101 ...我调整了数组的大小,并添加对象,但不幸(不令人惊讶的)添加的项目还没有初始化,我是否已经恢复使用do while循环并单独添加元素,但查看其周围的代码扩展使用addrange,我只是想知道如果这是一个整洁的vb做同样的事情的.NET方式添加空白元素到数组

位学习问题,只是在寻找利落的方式做同样的事情

在此先感谢

回答

2

是的,您需要循环并将新对象添加到新添加的索引中。

0

请尝试不使用数组,而是使用List。它们更容易使用并提供更多控制。

Dim myList As List(Of Whatever) 
myList.Add(New Whatever) 
+0

同意,但是使用现有的OBI当阵列传递给我,并增加一个Table.Rows集合,所以不能改变方法。你的答案确实给出了如何添加47个实例而不用做循环 – spacemonkeys 2010-02-23 13:05:48

+0

尽管干杯:-) – spacemonkeys 2010-02-23 14:02:19

0

您是否在寻找这....

使用ReDim PRESERVE thatArray(to_the_new_size)

的保护应,嗯,在原来的位置保留原始值。

+0

错误的结束,问题是当你从10个项目到15个项目时,添加新项目(对象数组)还没有用NEW语句初始化 另外VB.Net的方式,以便上述(这是我使用的)是array.resize(数组,新大小),它不会毁坏数组的内容,直到新的尺寸 – spacemonkeys 2010-02-23 14:30:34

0

我是(那么)不知道你期望完成什么......使用ReDim Preserve(旧) .reSize(较新)将肯定会添加到数组的“结尾”,并且这些元素必须是null,因为您无法将新元素传递给构造函数。

但是,你在找什么?一种将新值传递给新元素的构造函数的方式,以便像新元素一样返回旧值。

即使你重载构造函数中,你必须LOOP新值。(至于我可以看到。)

+0

嗨Tobrien,是的,这是问题。我问这个问题的唯一原因是出于兴趣,我用table.rows.addrange(array.convertall(数组,委托函数,将所有元素转换为表行)))将数组转换为表行。然后我不得不在最大计数上添加行,这在第一个陈述之后似乎有点冗长,所以我对这个问题不感兴趣,正如我在问题中已经达到了我想要的那样,只是寻找替代方法要做到这一点 – spacemonkeys 2010-02-24 21:21:23

+0

在过去不好的日子里,你最终会做的是抓取(即重载)构造函数,然后使用Windows USER.dll调用来移动内存或某些类似的内容(即在汇编代码级别)来填充新条目很快。 尽管大多数爱/恨DECLARE功能,他们在需要时提供速度。 tob – tobrien 2010-02-25 14:26:21