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

ste*_*ell 11 vb.net arrays

在VB.NET中使用数组的最佳方法是什么,可以是Nothing或初始化并给它一个零长度?

我能想到的三个选择是:

ReDim oBytes(-1)

oBytes = New Byte(-1) {}

oBytes = New Byte() {}
Run Code Online (Sandbox Code Playgroud)

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

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


编辑
所以有人知道有理由避免ReDim其他因为它是VB日的延续吗?

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

Ada*_*son 12

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

你应该尽量避免使用经典VB时代的"经典VB-isms" Redim和其他保留.我会推荐第三种选择.

编辑

要提供有关避免它的原因的更多信息,请参阅此MSDN页面.虽然页面没有特别建议反对它,但您可以看到Redim其他语法没有的缺点(以及混淆的可能性).

  1. Redim只能在现有阵列上使用.即便如此,它在语义上等同于声明一个new数组.Redim释放旧数组并创建一个新数组(因此它不Redim具备"粘贴"或"切断"元素的能力).此外,除非使用Preserve关键字,否则它是破坏性的,即使没有可视指示正在进行分配.
  2. 因为Redim无法创建数组(但只能在现有数组上工作),所以它只能在一个过程中使用; 在类级别,您被迫使用该New Byte() {}方法,为您分配两个视觉上不同的模式以分配新数组,即使它们在语义上是相同的.

  • 我完全同意."ReDim"和"New Byte(-1)"看起来很糟糕.在我看来它看起来像是在说ReDim oBytes(-1到0),它看起来应该给出两个元素的数组(它将在Vb6中).请,请不要这个世界只是假装在VB.net之前没有VB?请? (2认同)