在VB.NET中创建空数组的建议方法是什么?

在VB.NET中创建空数组的建议方法是什么?,vb.net,arrays,Vb.net,Arrays,在VB.NET中获取数组的最佳方法是什么?该数组可以是空数组,也可以是初始化数组,并将其长度设置为零 我能想到的三个选择是: ReDim oBytes(-1) oBytes = New Byte(-1) {} oBytes = New Byte() {} 第一个例子是我公司的大多数开发人员(我们以前做VB6)一直使用的。我个人更喜欢第三个例子,因为它最容易理解正在发生的事情 那么每种方法的优点和缺点是什么(我知道选项2和选项3非常相似) 编辑 那么,有人知道为什么要避免重拨,因为这是VB

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

我能想到的三个选择是:

ReDim oBytes(-1)

oBytes = New Byte(-1) {}

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

那么每种方法的优点和缺点是什么(我知道选项2和选项3非常相似)


编辑
那么,有人知道为什么要避免重拨,因为这是VB时代的遗留问题吗


并不是说我不会接受这个答案,如果这是所有人都有的话

我建议:
oBytes=newbyte(){}

您应该尽量避免像
Redim
这样的“经典VB ISM”,以及传统VB时代的其他遗留问题。我建议第三种选择

编辑

要提供有关为什么要避免它的更多信息,请参阅。虽然页面没有明确建议不要使用它,但您可以看到,
Redim
存在其他语法没有的缺点(以及可能出现的混淆)

  • Redim
    只能在现有阵列上使用。即便如此,它在语义上还是相当于声明一个
    新的
    数组
    Redim
    释放旧的数组并创建一个新的数组(因此它不像
    Redim
    能够“固定”或“切掉”元素)。此外,除非使用
    Preserve
    关键字,否则它是破坏性的,即使没有视觉指示正在进行分配
  • 由于
    Redim
    无法创建数组(但只能在现有数组上工作),因此只能在过程中使用;在类级别上,您必须使用
    newbyte(){}
    方法,这样就为分配新数组留下了两种视觉上截然不同的模式,即使它们在语义上是相同的

  • 是的,我同意,这就是引发这个问题的原因,我倾向于在任何地方删除旧的VB代码!我完全同意。“ReDim”和“newbyte(-1)”看起来就错了。在我看来,它看起来像是在说redimobytes(-1到0),它看起来应该给出一个由两个元素组成的数组(在Vb6中它会这样做)。拜托,拜托,这个世界难道不能假装在VB.net之前没有VB吗?求你了?@Binary-Worrier-100%同意你的说法!这是大多数VB.NET可用性问题的原因@阿达姆罗宾森太棒了。我也完全同意。但是,如何使空阵列增长?每次都使用
    列表
    转换为
    数组
    ?当数组是不可变的时,这就是方法。问题是:你总是想要它?在执行过程任务之前,您不能总是知道数组的大小;即使可以,在大多数情况下,性能也不会因为尺寸预先检查而有所提高。换句话说:
    push
    pop
    开关
    取消开关
    应该是本机类
    数组
    的方法。这怎么可能是向后不兼容或影响性能的呢?答案经过编辑以提供避免它的额外理由