Как динамически сохранять значения в массиве

#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() on abc , когда он уже определен как 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.