#c# #asp.net #arraylist
#c# #asp.net #arraylist
Вопрос:
Это очень простой вопрос. В моем коде я использую foreach value для помещения значений в строковую переменную. Для каждой итерации я хочу сохранять (добавлять одно за другим) значение этой переменной в arraylist. Затем извлеките значения arraylist по его индексу.
Код, который я пытаюсь:
foreach(string abc in namestring)
{
string values = abc;
ArrayList list = new ArrayList();
list.Add(values);
}
Например:
Если ‘namestring’ содержит такие значения, как tom, dik, harry. Тогда ‘list’ должен содержать эти значения в виде list(0) = tom, list(1) = dik, list(2) = harry.
Проблема заключается в хранении значений в arraylist
Комментарии:
1. Ваш вопрос не имеет смысла. Что такое editorValue? В чем именно проблема? list.Add() должен отлично работать для добавления строк. Хотя я бы рекомендовал использовать вместо этого общий список<строка>.
2. Просто любопытно: зачем использовать
.ToString()
onabc
, когда он уже определен какstring
?3. Мне трудно понять ваш вопрос, не могли бы вы уточнить? Вам не обязательно использовать toString() в abc. Это уже строка.
4. @ GAZ, EBB, MARTHIN: Извините за ошибки. Я отредактировал вопрос. Спасибо за беспокойство и уведомление.
Ответ №1:
Вы должны объявить свой ArrayList
вне цикла:
ArrayList list = new ArrayList();
foreach(string abc in namestring)
{
list.Add(abc);
}
Также, если вы используете .NET 2.0 и выше, вам следует использовать строго типизированный List<string>
вместо этого:
List<string> list = new List<string>();
Комментарии:
1. Вам также следует рассмотреть возможность использования List<string> вместо ArrayList
2. @Broken Glass: Большое спасибо за решение. объявление arraylist над циклом foreach прояснило мой путь.
Ответ №2:
Объявить ArrayList list = new ArrayList();
над foreach
Комментарии:
1. Ап сахи хо дост. Сработало простое объявление arraylist над каждым циклом foreach. Не удается выбрать более 1 ОТВЕТА, иначе u также был бы там.
Ответ №3:
Возможно, вы захотите создать свой список перед foreach
циклом. Atm вы создаете foreach строку в коллекции new list, а затем забываете о ее ссылке.
Комментарии:
1. @Aug: Да. Объявление arraylist над циклом foreach является правильным. Tnx за помощью. И да, спасибо еще раз за объяснение причины. Это было необходимо, чтобы избежать этой ошибки в следующий раз.
Ответ №4:
Похоже, что ваша строка имен уже является коллекцией (реализация ICollection)… Если это так, вы можете сделать это без цикла.
ArrayList list = new ArrayList();
list.AddRange(namestring);
return list;
или
List<string> list = new List<string>();
list.AddRange(namestring);
return list;
или просто используйте конструктор
ArrayList list = new ArrayList(namestring);
или
List<string> list = new List<string>(namestring);
Комментарии:
1. DKNAAK- спасибо за заботу о том, чтобы осветить множество других эффективных альтернатив. У меня есть решение, которое заключается в объявлении arraylist над циклом foreach.
Ответ №5:
var list = new ArrayList();
foreach(string abc in namestring)
{
list.Add(abc);
}
Ответ №6:
Код можно исправить, переместив строку «new ArrayList()» за пределы foreach.
В любом случае…
Если ‘namestring’ содержит такие значения, как tom, dik, harry. Тогда ‘list’ должен содержать эти значения в виде list(0) = tom, list(1) = dik, list(2) = harry
строка имен уже содержит их, например, namestring[0] = tom и т.д. таким образом, вы могли бы использовать его как есть.
Комментарии:
1. я, Алекс, спасибо. Я понял решение, поместив объявление arraylist вне цикла foreach.