Я пытаюсь прочитать текстовый файл в C # и назначить каждую строку определенным переменным, но я получаю необработанное исключение: System.ArgumentNullException: значение не может быть нулевым. Ошибка при попытке преобразовать строку в SongGenre.
public static void LoadSongs(string fileName)
{
string title = "a";
string artist;
string length;
string genre;
TextReader reader = new StreamReader(fileName);
while (title != null)
{
title = reader.ReadLine();
artist = reader.ReadLine();
length = reader.ReadLine();
genre = reader.ReadLine();
songs.Add(new Song(title,
artist,
Convert.ToDouble(length),
(SongGenre)Enum.Parse(typeof(SongGenre),
genre)));
}
reader.Close();
}
имя файла относится к текстовому файлу, который в порядке. Я пытался сделать это вне цикла, например:
TextReader reader = new StreamReader(fileName);
string title = reader.ReadLine();
string artist = reader.ReadLine();
double length = Convert.ToDouble(reader.ReadLine());
SongGenre genre = (SongGenre)Enum.Parse(typeof(SongGenre),
reader.ReadLine());
songs.Add(new Song(title, artist, length, genre));
string title1 = reader.ReadLine();
string artist1 = reader.ReadLine();
double length1 = Convert.ToDouble(reader.ReadLine());
SongGenre genre1 = (SongGenre)Enum.Parse(typeof(SongGenre),
reader.ReadLine());
songs.Add(new Song(title1, artist1, length1, genre1));
, и это сработало. Я также попытался напечатать жанр с помощью Console.WriteLine, и он работал, поэтому я убедился, что он не равен нулю, но я не знаю, почему я получаю эту ошибку.
Это не дубликат других вопросов,Цикл не работает правильно, и ниже вы можете найти, как это исправить.