2013-04-01 1 views
-4

новичку здесьSystem.Collections.ArrayList

У меня есть эта строка кода здесь

lblDepart.Text = t.DepartureCities; 

и возвращает

System.Collections.ArrayList 

Я предполагаю, что это ArrayList .... как бы Я показываю его правильно?

+1

Можете ли вы уточнить, что вы подразумеваете под дисплеем? Веб? Консоль? WinForm? – 2013-04-01 19:04:05

+0

какой тип 't'? –

+0

У меня есть ярлык 'lblDepart =" Мы уходим из "+ t.DepartureCities; и The DepartureCities - это Лос-Анджелес, Бостон, Торонто ... пытается показать на этикетке «Мы уезжаем из Лос-Анджелеса, Бостона, Торонто. – user979331

ответ

3

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

ArrayList list = t.DepartureCities; 
StringBuilder builder = new StringBuilder(); 
for (int i = 0; i < list.Count; i++) { 

    if (builder.Length > 0) { 
    builder.Append(", "); 
    } 
    object current = list[i]; 
    builder.Append(current); 
} 
lblDeparture.Text = builder.ToString(); 

Обратите внимание, что ArrayList, как правило, считается устаревшим типом в .Net. Если вы управляете DepartureCities, вы должны использовать List<T>.

Причина - сильная типизация. С ArrayList я понятия не имею, какой тип элементов вы хранящих в коллекции: string, City и т.д ... С List<T> это тривиально очевидно, потому что он будет непосредственно утверждать элементы, которые он содержит: List<string>, List<City> и т.д ...

+0

Бонусные баллы за сообщение пользователю о том, что список предпочтителен для фреймворка> = 2.0 – 2013-04-01 19:08:51

+0

. ссылка?) ' – user979331

+0

@ user979331 не забудьте добавить' using System.Text' в начало файла. – JaredPar

0

Если вы звоните

lblDepart.Text = t.DepartureCities; 

то это неявно вызывает

lblDepart.Text = t.DepartureCities.ToString(); 

и ToString() -метод из них встроенные типы обычно возвращают имя объекта. Объект Collection -объект, содержащий несколько отдельных объектов. Если вы хотите получить доступ к отдельным элементам, используйте

foreach(var item in t.DepartureCities){ 
//use item in here 
} 
1
lblDepart.Text = String.Join(",", t.DepartureCities.OfType<YourType>()); 

Изменения YourType соответственно. Может быть City?

+0

Я получаю сообщение об ошибке с этим 'Тип или имя пространства имен 'YourType' не удалось найти (вы отсутствуете директива using или ссылка на сборку?) ' – user979331

+0

@ user979331 Вы должны заменить' YourType' на правильный тип. Что находится в 't.DepartureCities'? – I4V

+0

Что я не уверен ... Я попробовал City и ListItem, и я получил эту ошибку 'System.Collections.ArrayList 'не содержит определения для' OfType '' – user979331

Смежные вопросы