2010-02-23 78 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