Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2012, 00:35   #1
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию маааненькая проблемка

Народ, подскажите что накосячила?
Хотела создать массив списков. Сделала вот так:
List<string>[] mas = new List<string>[D];

После чего решила добавить элемент, вот таким образом:
mas[a].Add(b);
При выполнении этой строчки программы вылетает, вот с такими криками:

An unhandled exception of type 'System.NullReferenceException' occurred in translator.exe

Additional information: Object reference not set to an instance of an object.


В чём косяк?
PinkPink вне форума Ответить с цитированием
Старый 27.03.2012, 00:54   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

каждый список в массиве тоже нужно создать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.03.2012, 00:55   #3
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
каждый список в массиве тоже нужно создать.
ааа..
это в цикле сделать?
PinkPink вне форума Ответить с цитированием
Старый 27.03.2012, 00:58   #4
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию

Цитата:
Сообщение от PinkPink Посмотреть сообщение
ааа..
это в цикле сделать?
List<string> [] mas = new List<string> [6];
for (int i=0;i<mas.Lenght;i++)
{
mas[i] = new List<string>();
}
PinkPink вне форума Ответить с цитированием
Старый 27.03.2012, 01:02   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да именно так.

на будущее пользуйтесь тэгом для выделения кода.
Код:
List<string> [] mas = new List<string> [6];
for (int i=0;i<mas.Lenght;i++)
{
    mas[i] = new List<string>();
}
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.03.2012, 01:55   #6
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

..........................
=master= вне форума Ответить с цитированием
Старый 27.03.2012, 19:15   #7
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
да именно так.

на будущее пользуйтесь тэгом для выделения кода.
Код:
List<string> [] mas = new List<string> [6];
for (int i=0;i<mas.Lenght;i++)
{
    mas[i] = new List<string>();
}
простите пожалуйста, вот ещё такой вопрос:
вставку элементов делаю таким образом:
Код:
(mas[a]).Add(b);
компилятор не ругается, значения a и b приходят корректные, но вставки не происходит. это потому что я неправильно обращаюсь к элементу массива?
как тогда правильно, ведь если рассуждать логически, то по-моему верно
PinkPink вне форума Ответить с цитированием
Старый 27.03.2012, 19:24   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну скобок там не надо.
а вы как определяете что не вставили?

попробуйте так:
Код:
List<string> [] mas = new List<string> [6];
for (int i=0;i<mas.Lenght;i++)
{
    mas[i] = new List<string>();
    mas[i] = i.ToString();
}
foreach(var l in mas)
{
    foreach(var t in l)
    {
        Console.WriteLine(t);
    }
}
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.03.2012, 19:54   #9
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ну скобок там не надо.
а вы как определяете что не вставили?

попробуйте так:
Код:
List<string> [] mas = new List<string> [6];
for (int i=0;i<mas.Lenght;i++)
{
    mas[i] = new List<string>();
    mas[i] = i.ToString();
}
foreach(var l in mas)
{
    foreach(var t in l)
    {
        Console.WriteLine(t);
    }
}
ставлю точку прерывания после вызова этой функции. когда её работа заканчивается в ней странным образом ничего нет, либо есть один элемент)
Код:
mas[i] = i.ToString();
//это для чего? компилятор злится
PinkPink вне форума Ответить с цитированием
Старый 27.03.2012, 19:57   #10
PinkPink
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 98
По умолчанию

насчёт foreach что-то вообще не поняла..
мне вообщем-то полностью заполнять массив не надо, в функцию приходит индекс и строка, по индексу в конец одного из списков вставляется строка
PinkPink вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемка Assman Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 21.06.2010 17:24
ПРОБЛЕМКА Kirill99 Помощь студентам 8 19.04.2010 18:51
Проблемка Lacrimoso Общие вопросы C/C++ 11 24.09.2009 23:14
проблемка( Alexcomeback Общие вопросы C/C++ 4 16.04.2009 18:38