Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Строго определить тип объектов в коллекции, Collections(Of ...) 
:(
    Опции темы
RUVATA
Дата 9.2.2011, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 24.8.2010

Репутация: нет
Всего: нет



Всем доброго времени суток...

Не могу разобраться с коллекциями в .NET
Суть моей проблемы такова.
Объявить коллекцию, и строго ограничить тип объектов который в нее будут входить... заранее оговорюсь -
- эти объекты есть экземпляры моего собственного класса.
Например:

Создам я класс
Код

    Public Class MyClass

        Public Property MyPropetry1 As String

        Public Property MyPropetry1 As String

    End Class

Вот в некоей процедуре я объявил несколько его экземпляров
Код

     Dim TestObject1 As New MyClass
     Dim TestObject1 As New MyClass


А теперь я хочу объявить коллекцию объектов, но так чтобы в ней явно содержались только экземпляры MyClass
И вот собственно сам вопрос как мне это сделать?
Я могу объявить просто коллекцию, но ограничить ее по типу объектов например так
Код

     Public MyCollection As Collection(Of MyClass)

не дает IDE... сообщая о ошибке "Для "Microsoft.VisualBasic.Collection" не определены параметры-типы и поэтому нельзя использовать аргументы-типы."
хотя просто создать коллекцию и добавлять в нее мои TestObject1, TestObject2 я могу, все OK... но вместе с ними я могу и добавлять любые другие объекты... что меня не устраивает... вот
PM MAIL   Вверх
Wanderer2019
Дата 9.2.2011, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 2
Всего: 17



MSDN:

Код

Dim dinosaurs As New List(Of String)


http://msdn.microsoft.com/en-us/library/4kf43ys3.aspx

Это сообщение отредактировал(а) Wanderer2019 - 9.2.2011, 15:48
PM ICQ MSN   Вверх
diadiavova
Дата 9.2.2011, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Используй коллекции, в которых определены параметры-типы. Например List(Of T)


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
RUVATA
Дата 10.2.2011, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 24.8.2010

Репутация: нет
Всего: нет



Нет... не помогает, не работает...
на этапе объявления ...Collection или List в аргументах принимают только (Of типы данных) н/п (Of String) или (Of Int32)
но вот (Of свой класс) ни так ни этак...
PM MAIL   Вверх
diadiavova
Дата 10.2.2011, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Вообще-то MyClass - это в бейсике зарезервированное слово, так что попробуй либо дать своему классу другое имя, либо возьми MyClass в квадратные скобки.

Добавлено через 9 минут и 27 секунд
Хотя студия сама их вставляет... Скорей всего ты определил свой класс в другом пространстве имен и забыл его импортировать, поэтому студия его просто не видит.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
RUVATA
Дата 10.2.2011, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 24.8.2010

Репутация: нет
Всего: нет



MyClass  - это я от балды для примера написал... Пусть любое уникальное имя... не суть... У меня в коде свои имена
но я похоже разобрался... в .NET так видимо вообще нельзя... да и видимо не нужно... любое действие над коллекциями производится с указанием типа объектов... 
Та к что если надо проверять на этапе добавления, то проще всего тупо обвить массив, из чего ты его объявишь, то и будет ограничением.. 
PM MAIL   Вверх
diadiavova
Дата 10.2.2011, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(RUVATA @  10.2.2011,  16:44 Найти цитируемый пост)
 в .NET так видимо вообще нельзя

Вообще-то можно. Проблемы, о которой ты пишешь возникнуть в принципе не должно.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0481 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.