2011-01-28 2 views
3

Могу ли я иметь список, содержащий одну строку и два числа? Или у меня может быть только один тип элемента?Список с разными типами объектов?

+1

Что представляют собой эти объекты? Имеет ли смысл иметь разные типы в списке? –

ответ

8

Если это то, что вам нужно, тогда я бы посмотрел на не общий класс System.Collections.ArrayList.

Update

Для тех из вас, кто не собирается читать огромный комментарий цепь ... это выглядит как Адам Робинсон к чему-то, используя List<object> над ArrayList. Оба будут работать, но в больших коллекциях кажется, что List<object> заметно выше, чем ArrayList.

+1

Я бы защищал 'Список '. Нет необходимости использовать 'ArrayList' больше. –

+0

@Adam - Зачем переходить в список и использовать что-то, предназначенное для безопасного типа, а не для того, чтобы использовать то, что предназначалось для хранения разных объектов? –

+0

@Justin: Вы не делаете его небезопасным, вы делаете его безопасным для типа ближайшего общего предка, который является «объектом». Я бы выбрал 'List ' здесь, потому что вы ничего не * набираете *, используя 'ArrayList' (т. Е. Он не делает ничего, что' List 'does not), и это будет соответствовать моему * другому * списки. Другими словами, я использую 'List ', когда мне нужен список; Я не использую 'List ', когда мои объекты находятся в жесткой иерархии наследования и 'ArrayList', когда они не являются. –

4

Вы можете. Список объектов может это сделать. Но вы теряете безопасность типа с этим, а также время разработки intelliSense.

Что вы хотите сделать? Вы также можете использовать класс с 3 членами.

3

Нет, контейнеры наподобие List(Of T) магазин точно один типT элементов. Вы можете, однако, сделать этот один тип состоящий из одной строки и двух чисел.

Structure Foo 
    Public Desc As String 
    Public x As Integer, y As Integer 
End Structure 

Dim List = New List(Of Foo) 
0

Да, вы можете.

dim myVehicles as new list(of object) 
dim myCar as new car 
dim myBike as new bike 
dim mySecondCar as new car 


myVehicles.add(myCar) 
myVehicles.add(myBike) 
myVehicles.add(mySecondCar) 
Смежные вопросы