2009-10-22 28 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

相关问题