Я бы определенно отказался от использования ArrayList
.Зачем?Поскольку с момента появления дженериков в .NET версии 2.0, которая была довольно давно, строго типизированный List(Of T)
занял свое место в большинстве практических целей.
Даже в вашем случае я бы посоветовал противArrayList
, потому что у вас может быть намного лучшая и более легкодоступная структура данных - например, такая как:
Structure CompositeValue ' or declare this as Class instead; see comment below!
Public Property SomeString() As String
Public Property FirstInteger() As Integer
Public Property SecondInteger() As Integer
Public Property MaybeFirstBoolean() As Nullable(Of Boolean)
Public Property MaybeSecondBoolean() As Nullable(Of Boolean)
End Structure
' Note that the above is the syntax for auto properties, which were introduced
' with VB.NET 10 / VS 2010.
Преимущества: Таким образом, вы выиграли 'например, нужно помнить, в какой позиции в ArrayList
находится строка или второе целочисленное значение;компилятор сможет убедиться, что вы обращаетесь к свойству, к которому, по вашему мнению, вы обращаетесь.Кроме того, ваш код будет намного легче читать и понимать.
Начиная с .NET 4, вы также можете использовать Tuple
(Of String, Integer, Integer, Nullable(Of Boolean), Nullable(Of Boolean))
:
Dim myCompositeValue = Tuple.Create("Foo", 1, 2, True, False)
Однако позвольте мне сказать, что кортежи не обладают всеми преимуществами, которые имеют такие структуры, как приведенная выше классовая структура;Вы получаете безопасность типов, но не можете, например, дать разумные имена этим пяти свойствам.Кортежи в VB.NET представляют собой не что иное, как безопасный для типов набор анонимных значений.