代码之家  ›  专栏  ›  技术社区  ›  stevehipwell

在vb.net中生成空数组的建议方法是什么?

  •  11
  • stevehipwell  · 技术社区  · 15 年前

    在vb.net中,取一个数组的最佳方法是什么?该数组可以是空的,也可以是初始化的,并将其长度设为零?

    我能想到的三种选择是:

    ReDim oBytes(-1)
    
    oBytes = New Byte(-1) {}
    
    oBytes = New Byte() {}
    

    第一个例子是我公司的大多数开发人员(我们以前做过vb 6)一直使用的。我个人更喜欢第三个例子,因为它最容易理解正在发生的事情。

    那么,每种方法的积极性和消极性是什么(我知道选项2和3非常相似)?


    编辑
    有人知道要避免的原因吗? ReDim 还有因为它是vb时代的遗留物?

    如果这是所有人都有的话,我不会接受这一点作为答案!

    1 回复  |  直到 15 年前
        1
  •  12
  •   Brian Webster Jason    8 年前

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

    你应该尽量避免“经典的vb isms”,比如 Redim 以及其他经典的vb时代遗留下来的东西。我推荐第三种选择。

    编辑

    要提供有关为什么要避免它的更多信息,请参见 this MSDN page .虽然页面没有特别建议,但您可以看到 重新定义 遭受其他语法不具备的缺点(以及可能出现的混淆)。

    1. 重新定义 只能用于 现有的 数组。即使如此,它在语义上等价于声明 new 数组。 重新定义 释放旧数组并创建新数组(因此 重新定义 具有“粘上”或“切掉”元素的能力。此外,它具有破坏性,除非 Preserve 使用关键字,即使没有视觉指示正在进行分配。
    2. 因为 重新定义 无法创建数组(但只能在现有数组上使用),它只能在过程中使用;在类级别,您必须使用 New Byte() {} 方法,为分配新数组留下两个视觉上不同的模式,即使它们在语义上是相同的。