Ошибка при копировании массива в другой массив - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Моя задача: получить n-e количество элементов массива, разбив основной массив ArrayLines на определенное количество частей (вводится с клавиатуры). Что я придумал: узнать, сколько получится строк в каждой части после разбива, после копировать массив с элементами в другой массив
       int CountParts = Convert.ToInt32(numericUpDown1.Value); // выбранное количество частей
            Double TotalFinishLines = Math.Floor(Convert.ToDouble(CountLines1 / CountParts));
            int LinesInPart = Convert.ToInt32(TotalFinishLines); // количество строк в каждой пачке
            if (LinesInPart < 100)
            {
                MessageBox.Show("Указано слишком большое количество частей для такого количества строк");
            }
            else
            {
                int j = 1;
                
                while (j <= CountParts)
                {
                    string[] parts = new string[LinesInPart]; // создаем массив для будущей части
                    Array.Copy(ArrayLines, parts, LinesInPart); // помещаем туда некое количество строк
                    parts = parts.Where(n => !string.IsNullOrWhiteSpace(n)).ToArray(); // удаляем пустые строки
                    FileStream fs1 = File.Create(FinishFileName+"_"+j+".txt");
                    fs1.Close();
                    File.WriteAllLines(FinishFileName + "_" + j + ".txt", parts);
                    Array.Clear(ArrayLines, 0, LinesInPart); // чистим основной массив для оптимизации
                    Array.Clear(parts, 0, LinesInPart); // чистим массив, куда вставлялись строки
                    j++;
                }
                MessageBox.Show("Complete!");
            }
Ругается на строчку Array.Clear(parts, 0, LinesInPart); Если убрать клир, то ничего не меняется Пробовал также чистить через parts[0] = "\0", не выходит. Помогите, пожалуйста

Решение задачи: «Ошибка при копировании массива в другой массив»

textual
Листинг программы
int j = 1;
                
                while (j <= CountParts)
                {
                    string[] parts = new string[LinesInPart]; // создаем массив для будущей части
                    Array.Copy(ArrayLines, parts, LinesInPart); // помещаем туда некое количество строк
                    //parts = parts.Where(n => !string.IsNullOrWhiteSpace(n)).ToArray(); // удаляем пустые строки
                    MessageBox.Show(Convert.ToString(parts.Length)+" "+Convert.ToString(ArrayLines.Length));
                    FileStream fs1 = File.Create(FinishFileName + "_" + j + ".txt");
                    fs1.Close();
                    File.WriteAllLines(FinishFileName + "_" + j + ".txt", parts);
                    Array.Reverse(ArrayLines);
                    ArrayLines[(CountParts - j)/LinesInPart] = "\0";
                    parts = null;
                    j++;
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы