9 / 9 / 3
Регистрация: 08.07.2010
Сообщений: 70
1

Как обратиться к элементу ArrayList

02.03.2012, 12:10. Показов 10245. Ответов 6
Метки нет (Все метки)

Добрый день. Читаю данные из текстового файла и создаю двумерный массив. Для этого использую массив объектов ArrayList.
C#
1
2
3
4
5
6
7
8
9
static int nColumnNum = 7;
ArrayList[] arlist = new ArrayList[nColumnNum];
public Constructor()
{
      for (int i = 0; i < nColumnNum; i++)
      {
          arlist[i] = new ArrayList();
      }
}
После заполнения массива, у меня не получается обратиться к его элементу. Пробовал уже по-разному
C#
1
2
int nArraySize = arlist[0].Count;
double dElement = arlist[0][0] as double; //Как обратиться к элементу?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2012, 12:10
Ответы с готовыми решениями:

Как обратиться к элементу стека?
Как обратиться к элементу стека? Обращение как к элементу массива, например a, не проходит. ...

Как обратиться к XML элементу с пространством имен?
Добрый день. Есть xml с таким определением пространства имен (немного укоротил значения имен для...

Как обратиться к элементам ArrayList?
Как обратиться к элементам AraayList !?!? привожу код в аттаче!

Как обратиться к элементу по имени?
Привет! Пример из ФАКа (Controls as TextBox).Text = &quot;newText&quot;; работает отлично, но когда...

6
56 / 56 / 10
Регистрация: 27.12.2011
Сообщений: 141
02.03.2012, 12:16 2
Попробуй вместо ArrayList создать список Классов нужной тебе структуры
0
9 / 9 / 3
Регистрация: 08.07.2010
Сообщений: 70
02.03.2012, 12:36  [ТС] 3
Решил, может не оптимально, с помощью промежуточного массива
C#
1
2
3
4
5
6
7
8
            int nArraySize = arlist[0].Count;
            double[][] dArray = new double[nColumnNum][];
 
            for (int i = 0; i < nColumnNum; i++)
            {
                dArray[i] = new double[nArraySize];
                dArray[i] = (double[])arlist[i].ToArray(typeof(double));
            }//for
Но вопрос, как обратиться к элементу массива объектов ArrayList остается
0
Эксперт Java
4087 / 3821 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
02.03.2012, 12:48 4
Цитата Сообщение от ai.xss.ru Посмотреть сообщение
как обратиться к элементу массива объектов ArrayList остается
не понимаю что у вас не получилось
C#
1
2
3
            arlist[0].Add(12.3);
            double o = (double)arlist[0][0];
            Console.WriteLine(arlist[0][0]);
Все прекрасно работает

PS. НЕ используйте ArrayList. Это старая коллекция, сохранившаяся, только для обратной совместимости, еще со времен первого .net. Используйте generic коллекции, List<>, например
1
339 / 339 / 90
Регистрация: 04.03.2010
Сообщений: 648
02.03.2012, 12:49 5
Не совсем понятно, что нужно.
Сложно назвать это двумерным массивом...
а обращение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        class Constructor
        {
            static int nColumnNum = 7;
            public ArrayList[] arlist = new ArrayList[nColumnNum];
            public Constructor()
            {
                  for (int i = 0; i < nColumnNum; i++)
                  {
                      arlist[i] = new ArrayList();
                  } 
            }
        }
C#
1
2
3
4
5
6
7
8
9
 private void button1_Click(object sender, EventArgs e)
        {
            Constructor cnstr = new Constructor();
            cnstr.arlist[1].Add("0");
            cnstr.arlist[1].Add("1");
            cnstr.arlist[1].Add("2");
 
            MessageBox.Show(cnstr.arlist[1][1].ToString());
        }
0
0 / 0 / 0
Регистрация: 14.03.2012
Сообщений: 5
14.03.2012, 20:44 6
Вопрос актуален, та же проблема, решения не нашлось?
собственно у меня элемент это объект самописного класса,
и хотелось бы обратиться к его методам, думаю вы имеете ввиду то же.
0
9 / 9 / 3
Регистрация: 08.07.2010
Сообщений: 70
15.03.2012, 10:29  [ТС] 7
Проблема было в том, что память для двумерного ArrayList была выделена, но массив был не полностью заполнен с помощью метода Add(); Надо было полностью заполнить
C#
1
2
3
4
5
6
7
8
9
10
11
12
            for (int i = 0; i < nColumnNum; i++)
            {
                arlist[i] = new ArrayList();
            }
 
            for (int i = 0; i < nColumnNum; i++)
                for (int j = 0; j < nColumnNum; j++)
                {
                    arlist[i].Add((double)0.0);
                }
 
           double d = (double)arlist[0][0];
Добавлено через 30 минут
А вообще, говорят, лучше List<> использовать
C#
1
2
3
4
5
6
7
8
9
10
11
12
List<List<double>> list = new List<List<double>>();
 
for (int i = 0; i < nColumnNum; i++)
{             
     list.Add(new List<double>());
     for (int j = 0; j < nColumnNum; j++)
     {
          list[i].Add(0.0);
     }
}
 
double d1 = list[0][0];
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2012, 10:29
Помогаю со студенческими работами здесь

Как обратиться к элементу внутри шаблона
Вот имеется такая разметка: &lt;TabItem Name=&quot;countItem&quot; Background=&quot;{StaticResource Backgrjound}&quot;&gt; ...

Как обратиться к выбранному элементу в ComboBox
Здравствуйте) Помогите плиз разобраться с combobox. Дана длинная задача, всё могу сделать, только с...

Как обратиться к каждому элементу столбца DataSet
Функция возвращает столбец типа DataSet, как обратиться к каждому элементу столбца?

Как обратиться к элементу управления из другого потока
Всем доброго времени суток! Делаю клиент серверное приложение, где несколько пользователей могут...

Как обратиться к элементу Репитера из-под code-behind?
Приветствую! &lt;asp:Repeater ID=&quot;Repeater1&quot; runat=&quot;server&quot; DataSourceID=&quot;SqlDataSource1&quot;&gt;...

Как обратиться к элементу Form1 из другого класса и потока?
class PTools:Form1 { label1.Invoke(new Action(() =&gt; label1.Text = &quot;Текст&quot;)); } ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru