C#についてお聞きしたいことがあります。なぜ、添付画像のようなエラーが出るのかわかりません。どなたか教えて頂けますでしょうか。よろしくお願いいたします。 Program.cs
C#についてお聞きしたいことがあります。なぜ、添付画像のようなエラーが出るのかわかりません。どなたか教えて頂けますでしょうか。よろしくお願いいたします。 Program.cs using Question3; // 初期化 string line; List<Medalist> medalists = new List<Medalist>(); // ファイルを開く using (StreamReader sr = new StreamReader(@"C:\Users\81803\source\repos\Assignment1\Question3\medalist.csv")) { // ファイルの内容を1行づ読み込み while ((line = sr.ReadLine()) != null) { // カンマで分割 var values = line.Split(','); // オブジェクト作成 string athlete = values[0]; int year = int.Parse(values[1]); int gold = int.Parse(values[2]); int silver = int.Parse(values[3]); int bronze = int.Parse(values[4]); medalists.Add(new Medalist { Athlete = athlete, Year = year, Gold = gold, Silver = silver, Bronze = bronze }); } } Medalist.cs public record Medalist() : IComparable<Medalist>, IFormattable, IEnumerable<Medalist> { public string Athlete { get; set; } public int Year { get; set; } public int Gold { get; set; } public int Silver { get; set; } public int Bronze { get; set; } //constructor public Medalist(string athlete, int year, int gold, int silver, int bronze) : this() { this.Athlete = athlete; this.Year = year; this.Gold = gold; this.Silver = silver; this.Bronze = bronze; }
C言語関連・42閲覧
ベストアンサー
過去の質問にあったCSVを読み込んだんでしょうが 1行目はヘッダですべて文字列が入っていますね。 "Year"という文字列をintに変換しようとして エラーになっていると思われます。 sr.ReadLine() // 先頭行読み飛ばし while ((line = sr.ReadLine()) != null) { … のようにして、ヘッダ行を飛ばしましょう。 whileの中を try~catchで囲んで 変換失敗時の例外を受け取った場合はリストに追加しない処理を入れると より安全です。
1人がナイス!しています
質問者からのお礼コメント
お答えいただきどうも有難うございます!読み込みできました。
お礼日時:1/29 14:09