Поиск
 

Форум

Обсуди тонкости C Sharp и DotNet

Cи Шарп это просто Simple C#
Логин Пароль Вход Регистрация
Главная
Изучаем C#
Web-приложения
Win-приложения
Web-сервисы
ADO.NET
FrameWork
Алгоритмы
Исходники
Классы
Среда разработки
Статьи
Форум
FAQ
О Проекте
Обратная связь
Отблагодарить
Rambler's Top100
 
Форумы - Общий - Ошибка пр работе с массивом

ПользовательСообщение
agrasteya

Сообщений:4
Репутация:0,4
Здравствуйте.
Начал разбираться с C#. Столкнулся с проблемой

string query = "kakaya nibyd fignya";
string [] separated;
if (query.IndexOf("\r\n") != -1) separated = parseQuery(query);
else separated[0] = query;

parseQuery возвращает string[].

Отвечает "Использование локальной переменной "separated", которой не присвоено значение", ссылаясь на строку else separated[0] = query;

Подскажите, где я ошибся и как надо?
Спасибо.

Отправлено: 12.01.2010 23:44:00Для ответа необходима авторизация
james

Сообщений:57
Репутация:10,9
У тебя в ветке else массив не инициализирован
соответственно он не может строку query поместить в первый элемент массива так как его нет
тебе надо на этапе объявления массива
string[] separated;
определить его или позже но до работы с массивом



Отправлено: 13.01.2010 8:55:12Для ответа необходима авторизация
agrasteya

Сообщений:4
Репутация:0,4
Если я правильно понимаю, то инициализация это указание количества элементов в массиве, но проблема в том, что parseQuery(query) возвращает неизвестное (более одного) количество элементов. Каким образом мне инициализировать массив в для parseQuery(query)?

Отправлено: 13.01.2010 10:09:00Для ответа необходима авторизация
james

Сообщений:57
Репутация:10,9
На сколько я понял у вас ругается не на вот эту строку


separated = parseQuery(query); 


а на


separated[0] = query; 



в первом случае ошибки быть не должно массив инициализируется массивом переданным из parseQuery
а во втором массив получается не инициализированным (в нем нет ни одного элемента)
если у Вас в Else всегда будет один элемент массива то можете сделать так


separated = new string[]{query};



Отправлено: 13.01.2010 10:22:22Для ответа необходима авторизация
agrasteya

Сообщений:4
Репутация:0,4
Спасибо. Это сработало. Правда, признаюсь, логика этих событий для меня остается не до конца ясной.

Отправлено: 13.01.2010 23:28:00Для ответа необходима авторизация
james

Сообщений:57
Репутация:10,9
Без инициализации массива Вы не можете делать


separated[0] = query;



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

Отправлено: 14.01.2010 9:25:00Для ответа необходима авторизация