В случае, если вы используете 2.0 или более позднюю версию, вы можете определить свой arraylist следующим образом:
Dim alList as New List(Of MyStruct)()
alList.Add(oStruct)
Это даст вам ту же семантику, что и у массива (поиск по индексу, строгая типизация, поддержка IEnumerable и т. Д.).
В .Net 2.0 и более поздних версиях есть только две причины использовать массив вместо общего списка:
- Вы точно знаете, сколько предметов у вас есть, и знаете, что количество не изменится. Это удивительно редко.
- Вам необходимо вызвать функцию, для которой требуется массив. В BCL их все еще довольно много, но ваш собственный код должен запрашивать
IEnumerable<T>, IList<T>, or ICollection<T>
, и лишь в редких случаях - массив.
Наконец, это немного придирчиво, но есть два стилистических момента, которые я хочу затронуть в коде, который вы разместили. Во-первых, обратите внимание на сокращенный синтаксис, который я использовал для создания New List<MyStruct>
. Там нет символа =, и вам не нужно вводить имя типа дважды. Это была поддержка еще в 1.1, так что нет никаких оправданий. Во-вторых, руководящие принципы стиля для .Net , опубликованные Microsoft на MSDN (см. Раздел общие соглашения об именах ), особенно рекомендуют против венгерских бородавок, таких как 'o' или 'a'. Это было хорошо для VB6 / VBScript, которые были напечатаны слабо, но .Net строго типизированы, что делает бородавки, ну, в общем, уродливыми.