2009-10-22 26 views
10

什麼是最好的方式採取VB.NET數組可以是無或初始化,並給它一個零長度?在VB.NET中建立一個空數組的建議方法是什麼?

我能想到的三個選項:

ReDim oBytes(-1) 

oBytes = New Byte(-1) {} 

oBytes = New Byte() {} 

第一個例子就是大多數的在我公司開發人員(我們用來做VB 6)一直使用。我個人喜歡第三個例子,因爲它是最容易理解正在發生的事情。

那麼每種方法的積極和消極是什麼(選項2和3與我所知非常相似)?


編輯
因此,沒有人知道的原因,以避免ReDim等,由於它是從VB天緩繳?

不是說我不會接受,如果這是所有人都有的答案!

+0

回答編輯,以提供額外的理由,以避免它 – 2009-10-22 15:37:26

回答

11

我建議:oBytes = New Byte() {}

你應該儘量避免從經典VB天「經典VB-主義」之類Redim,以及其他遺留下來的。我會推薦第三個選項。

編輯

要提供爲什麼要避免它的一些詳細信息,請參閱this MSDN page。儘管該頁面並未特意提供反對意見,但您可以看到Redim存在其他語法不具備的缺點(以及可能造成混淆)。

  1. Redim只能在現有陣列中使用。即使如此,它在語義上等同於聲明new數組。 Redim釋放舊的陣列並創建一個新的陣列(因此它不是好像Redim有能力「粘上」或「截斷」元素)。此外,除非使用Preserve關鍵字,否則它具有破壞性,即使沒有可視指示正在進行分配。
  2. 由於Redim無法創建數組(但只能在現有數組上工作),因此它只能在過程中使用;在課堂級別,您不得不使用New Byte() {}方法,即使它們在語義上相同,您仍然可以使用兩種視覺上不同的模式分配新數組。
+0

是的我同意,這是什麼引發了這個問題,我傾向於刪除舊的VB代碼,無論我找到它! – stevehipwell 2009-10-22 15:01:19

+2

我完全同意。 「ReDim」和「New Byte(-1)」只是看起來錯了。在我看來,它看起來像是說ReDim oBytes(-1到0),看起來它應該給出兩個元素的數組(它將在Vb6中)。請,請不要只是在VB.net之前沒有VB的世界嗎?請? – 2009-10-22 15:15:30

+0

@Binary Worrier - 100%與你在一起!這是大多數VB.NET可用性問題的原因! – stevehipwell 2009-10-22 15:16:57

相關問題