Каков рекомендуемый способ создания пустого массива в VB.NET?

Каков наилучший способ взять массив в VB.NET, который может быть либо Nothing, либо инициализирован и дать ему длину нуля?

Три возможных варианта:

ReDim oBytes(-1)

oBytes = New Byte(-1) {}

oBytes = New Byte() {}

Первый пример - это то, что большинство разработчиков в моей компании (мы использовали VB 6) всегда использовали. Я лично предпочитаю третий пример, так как проще всего понять, что происходит.

Итак, каковы положительные и отрицательные для каждого подхода (варианты 2 и 3 очень похожи, я знаю)?


ИЗМЕНИТЬ
Так кто-нибудь знает причину, чтобы избежать ReDim другого, потому что это отрыв от дней VB?

Не то, чтобы я не принимал это как ответ, если все это есть!

Ответ 1

Я рекомендую: oBytes = New Byte() {}

Вы должны стараться избегать "классических VB-измов", таких как Redim, и других поколений от классических дней VB. Я бы порекомендовал третий вариант.

Edit

Чтобы предоставить дополнительную информацию о том, почему этого избежать, см. эту страницу MSDN. В то время как страница не рекомендует конкретно против этого, вы можете видеть, что Redim страдает от недостатков (и потенциального путаницы), которые не имеет другого синтаксиса.

  • Redim может использоваться только для существующих массивов. Тем не менее, семантически эквивалентно объявлению массива new. Redim выпускает старый массив и создает новый (так что это не так, как будто Redim имеет возможность "приклеивать" или "отбивать" элементы). Кроме того, он является разрушительным, если не используется ключевое слово Preserve, хотя визуальная индикация о том, что назначение имеет место, отсутствует.
  • Поскольку Redim не может создать массив (но может работать только с существующими массивами), его можно использовать только в процедуре; на уровне класса вы вынуждены использовать метод New Byte() {}, оставив вам два визуально разных шаблона для назначения новых массивов, хотя они семантически идентичны.