В классе ImageCompressor имеется 2 списка, первый заполняется по нажатию кнопки на главной форме, а второй (скрытно от пользователя), внутри класса ImageCompressor, после вызова метода Compress().
Когда пытаюсь вытащить данные из этих списков программа падает (исключение связано с индексом за пределами списка - появляется из-за пустоты второго списка).
В режиме отладки видно, что второй список внутри класса ImageCompressor заполнен элементами, а когда пытаешься получить данные из него через главную форму он пуст, почему?
Class "ImageCompressor"
public class ImageCompressor {
public readonly string FilePath;
public readonly string FileName;
public readonly long FileSize;
// ОБЬЯВЛЕНИЕ СПИСКОВ
public List<ImageCompressor> FilesBeforeProcessing { get; set; }
public List<ImageCompressor> FilesAfterProcessing { get; private set; }
public ImageCompressor() {
// ИНИЦИАЛИЗАЦИЯ СПИСКОВ
FilesBeforeProcessing = new List<ImageCompressor>();
FilesAfterProcessing = new List<ImageCompressor>();
}
public ImageCompressor(string path) {
FilePath = path;
FileName = new FileInfo(path).Name;
FileSize = new FileInfo(path).Length;
}
// МЕТОД ЗАПОЛНЯЮЩИЙ ВТОРОЙ СПИСОК ЭЛЕМЕНТАМИ
public void Fill(string outputpath) {
int length = FilesBeforeProcessing.Count;
for (int i = 0; i < length; i++) {
FilesAfterProcessing.Add(new ImageCompressor(
Path.Combine(outputpath, FilesBeforeProcessing[i].FileName)));
}
}
}
Main_Form
private void button6_Click(object sender, EventArgs e) {
ImageCompressor compressor = new ImageCompressor();
// ПЕРВЫЙ СПИСОК ЗАПОЛНЯЕТСЯ ЭЛЕМЕНТАМИ
compressor.FilesBeforeProcessing.AddRange(new List<ImageCompressor> {
new ImageCompressor(@"C:\Users\MSI\Desktop\Translator\uno.jpg"),
new ImageCompressor(@"C:\Users\MSI\Desktop\Translator\ч.jpg"),
});
// ВТОРОЙ СПИСОК ЗАПОЛНЯЕТСЯ ЭЛЕМЕНТАМИ
compressor.Fill(@"C:\Users\MSI\Desktop\Translator");
int length = compressor.FilesBeforeProcessing.Count;
// ОТОБРАЗИТЬ ПЕРВЫЙ СПИСОК - ЗАПОЛНЕН ЭЛЕМЕНТАМИ
for (int i = 0; i < length; i++) {
listBox1.Items.Add($"| Name Before {compressor.FilesBeforeProcessing[i].FileName}");
listBox1.Items.Add($"| Size Before {compressor.FilesBeforeProcessing[i].FileSize}");
}
// ОТОБРАЗИТЬ ВТОРОЙ СПИСОК - ПОЧЕМУ-ТО ПУСТОЙ
for (int i = 0; i < length; i++) {
listBox1.Items.Add($"| Name After {compressor.FilesAfterProcessing[i].FileName}");
listBox1.Items.Add($"| Size After {compressor.FilesAfterProcessing[i].FileSize}");
}
}