Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/22: Рейтинг темы: голосов - 22, средняя оценка - 4.82
4 / 4 / 0
Регистрация: 18.05.2009
Сообщений: 92

Передача массива строк в метод

31.07.2009, 16:03. Показов 4272. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите с проблемой, знаю что ето слишком примитивно но все же.
Пишит что не определена переменная, я читал в теории что перед применением масива строк его надо заполнить (чтото в етом роде) можете привести пример и обяснить мне дураку, что нужно сним сделать что бы можно было передавать его в метод. зарание спасибо

вот ошибка которую выдает
Use of unassigned local variable 'FileNames'



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Program
    {
        static void Main(string[] args)
        {
            string [] FileNames;
            ReadFile(FileNames);
        }
            
            
            
            static void ReadFile(string [] Names) 
        {
            try 
        {
            using (StreamReader sr = new StreamReader("TestFile.txt")) 
            {
                String line;
                int i = 0;
                while ((line = sr.ReadLine()) != null) 
                {
                    Names[i] = line + "*.txt";
                    i++;
                }
            }
        }
        catch (Exception e) 
        {
            Console.WriteLine("The file could not be read:");
            Console.WriteLine(e.Message);
        }
        }
      
  }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.07.2009, 16:03
Ответы с готовыми решениями:

Передача параметра в метод button_click()
public ProductDescription() { InitializeComponent(); CreateLabel(listx); } private...

Передача двухмерного массива в метод
Добрый день. Создаю метод для класса, хочу что бы параметром метода являлся двухмерный массив что то типа: Иван - 1 Андрей - 10 ...

Передача в метод элементов массива
Есть ли разница между ситуациями, когда в метод, в котором описан формальный параметр типа double, передается фактический параметр -...

7
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
31.07.2009, 16:07
у тебя массив только обьявлен, но не создан. Создается массив таким образом
C#
1
type[] name = new type[size];
0
Администратор
 Аватар для mik-a-el
87843 / 53164 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
31.07.2009, 16:11
Вместо
C#
1
string [] FileNames;
это:
C#
1
string [] FileNames = null;
И в ReadFile проинициализируйте.
0
4 / 4 / 0
Регистрация: 18.05.2009
Сообщений: 92
31.07.2009, 17:25  [ТС]
Переставил string [] FileNames = null; но теперь метод ловит ошибку (В екземпляре обьекта не задана ссылка на обьект)
Пробывал переделать метод как функциюю которая возвращает массив строк Names и опять ошибка
Program.ReadFile(string[])': not all code paths return a value
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 static void Main(string[] args)
        {
            string[] FileNames =  null;
            FileNames=ReadFile(FileNames);
            Console.ReadKey();
        }
 
 
 
        static string[] ReadFile(string[] Names)
        {
            try
            {
                using (StreamReader sr = new StreamReader("TestFile.txt"))
                {
                    String line;
                    int i = 0;
                    while ((line = sr.ReadLine()) != null)
                    {
                        Names[i] = line + "*.txt";
                        i++;
                    }   
                }
                return Names;
            }
            catch (Exception e)
            {
                Console.WriteLine("The file could not be read:");
                Console.WriteLine(e.Message);
            }
        }
0
84 / 83 / 6
Регистрация: 13.07.2009
Сообщений: 107
31.07.2009, 18:23
juda, по факту на вопрос "как передать массив в функцию" ответ был уже дан, теперь приходится отвечать на вопросы, которые вспыли в последствии .
Самый лучший ответ на такие вопросы - прочитать тему "передача параметров в функцию в C#" . Но судя то характеру вопросов не помешает вообще изучить базовые основы языка - могу дать линки на толковые книги Шилдта или Троэльсена.

Почему я так категоричен?
Если нужно получить массив произвольного к-ва элементов из функции, то можно вообще не использовать параметров:
C#
1
2
3
4
5
6
7
8
9
10
    public void F()
    {
      int[] arr=getArray();
    }
    
    public int[] getArray()
    {
      int[] arr=new int[5]{1,2,3,4,5};
      return arr;
    }
Если нужно вернуть результат обязательно через параметр и не важно содержимое массива на входе, то можно написать так:
C#
1
2
3
4
5
6
7
8
9
10
    public void F()
    {
      int[] arr;
      getArray(out arr);
    }
    
    public void getArray(out int[] arr)
    {
      arr=new int[5]{1,2,3,4,5};
    }
ну или, как уже предлагали, так:
C#
1
2
3
4
5
6
7
8
9
10
    public void F()
    {
      int[] arr=null;
      getArray(arr);
    }
    
    public void getArray(int[] arr)
    {
      arr=new int[5]{1,2,3,4,5};
    }
ну или так,если на перед знаешь, к-во элементов которые вернет метод:
C#
1
2
3
4
5
6
7
8
9
10
    public void F()
    {
      int[] arr=new int[5];
      getArray(arr);
    }
    
    public void getArray(int[] arr)
    {
      for (int i=0;i<arr.Length;i++) arr[i]=i;
    }
Нужно просто знать, что все переменные ссылочных типов, к которым относятся массивы, классы и тд толжны быть перед использованием проинциализированны, о чем у Шилдта можно прочитать уже с первых страниц!

В твоей конкретной задаче вообще не получится использовать статический массив, так как перед использованием его в цикле ты должен проинициализировать его указав максимальное к-во элементов, которые собираешься сохранить, а ты этого числа не знаешь, так как считываешь из файла.
Задача от того не усложняется, нужно всего лишь использовать что-то типа классов ArrayList или List<T>, но ты ведь врядле о таких классах слышал, или я не прав ?

Я не наезжаю, но нужно знать хотя-бы основы ну или иметь желание их изучать из вполне доступных источников .

ЗЫ
not all code paths return a value
а кто за тебя будет return писать после catch (Exception e) секции ?
2
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
31.07.2009, 18:35
juda,
Читай больше умных книжек - сие даст разгрузку рукам.
твой код переписывается так:
string[] arr = File.ReadAllLines("TestFile.txt").Select (p => p + "*.txt").ToArray();
1
4 / 4 / 0
Регистрация: 18.05.2009
Сообщений: 92
31.07.2009, 18:56  [ТС]
Всем спасибо, за критику тоже... Буду старатьса.
0
84 / 83 / 6
Регистрация: 13.07.2009
Сообщений: 107
31.07.2009, 19:46
Думаю лучше тогда запостить линк сюда:
http://www.infanata.org/ - известный ресур, где можно найти очень много сканов толковых книг, на различные темы.

Для начала вполне сойдет Эндрю Троелсен 2007 года или Герберт Шилдт 2004 года

Первая предпочтительнее, так как учитывает стандарт C# 2.0, но все что не относится к generic классам очень толково и во второй книге описано.

У меня есть и [en]Tr-n Pro C# 2008 and the NET 3.5 Platform Fourth Edition, но она на английском. Если кого заинтересует - могу выложить отдельно.

Удачи всем, кто действительно желает учиться !
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2009, 19:46
Помогаю со студенческими работами здесь

Передача параметра из массива в метод потока
Есть массив, содержащий +- 5 объектов Есть поток, который должен запускать метод с параметром из массива Т.е. в конце должно быть 5...

Передача пареметров в метод
Добрый день, Форумчане. У меня к вам такой вопрос: У меня есть такой метод: public void InsertStudData(string Surname, string Name,...

Передача переменных в метод
Подскажите, что мы должны передать при вызове в Main метода TGClient? Int и String понятно, а третье значение?

Передача Enum в метод
Вопрос от начинающего программиста, не закидывайте помидорами :tomatos: Есть такой кусок программы: for (int i = 0; i &lt;...

Передача строкового типа в метод
Здравствуйте форумчане. Подскажите плиз такое дело. Насколько я знаю, то тип стринг - ссылочный тип, а значит в метод в качестве аргумента...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru