前提・実現したいこと
C#で予約管理システムを作っています。
csvファイルから読み取った予約情報をリストに格納する段階で格納したデータが全て最後に読み取ったデータに刺し変わってしまうエラーが発生しています。
発生している問題・エラーメッセージ
・実現したい結果 rdTmp.ReservationInfo[0].ReservationHolder = user1 rdTmp.ReservationInfo[1].ReservationHolder = user2 rdTmp.ReservationInfo[2].ReservationHolder = user3 ・結果 rdTmp.ReservationInfo[0].ReservationHolder = user3 rdTmp.ReservationInfo[1].ReservationHolder = user3 rdTmp.ReservationInfo[2].ReservationHolder = user3
該当のソースコード
C#
1var rdTmp = new ReservationData(); 2var rdiTmp = new ReservationData_inner(); 3 4string str3 = { 5 user1,2020/5/10,2020/5/14\n 6 user2,2020/5/16,2020/5/24\n 7 user3,2020/5/28,2020/6/15 8}; 9 10string[] strarr2 = str3.Split('\n'); 11string[] strarr3 = new string[4]; 12for (int ki = 0; ki < strarr2.Length; ki++) 13{ 14// カンマ区切りで読み出す「予約者名、予約開始日、予約終了日」 15 strarr3 = strarr2[ki].Split(','); 16 rdiTmp.ReservationHolder = strarr3[0]; 17 rdiTmp.StartDate = DateTime.Parse(strarr3[1]); 18 rdiTmp.EndDate = DateTime.Parse(strarr3[2]); 19 // rdTmpへ追加 20 rdTmp.ReservationInfo.Add(rdiTmp); 21} 22 23public class ReservationData { 24 public string Number { get; set; } 25 public string PictureDir { get; set; } = ""; 26 public List<ReservationData_inner> ReservationInfo { get; set; } = new List<ReservationData_inner>(); 27} 28 29public class ReservationData_inner { 30 public string ReservationHolder { get; set; } = ""; 31 public DateTime StartDate { get; set; } = new DateTime(); 32 public DateTime EndDate { get; set; } = new DateTime(); 33} 34 35 36-結果---------------------------------------- 37 rdTmp.ReservationInfo[0] = user3,2020/5/28,2020/6/15 38 rdTmp.ReservationInfo[1] = user3,2020/5/28,2020/6/15 39 rdTmp.ReservationInfo[2] = user3,2020/5/28,2020/6/15 40 41
同じインスタンスをAddしているからでは?
回答2件
あなたの回答
tips
プレビュー