我在工作的對象列表。我的代碼看起來是這樣的爲什麼需要在填充List時在循環的每次迭代中創建一個新對象?
public class emp
{
public string emp_name{get;set;}
public int emp_id{get;set;}
}
List<emp> emplist = new List<emp>;
emp empobj = new emp();
// fetching data from data table
foreach (DataRow row in ds.Tables[0].Rows)
{
// initialize emp object
empobj.emp_name = row["emp_name"].ToString();
empobj.emp_id = (int)row["emp_id"];
// add empobject to emp list
emplist.add(empobj);
}
如果2個記錄被獲取從表然後我列出了每個列表中的對象最後記錄的細節。
我發現的是,如果我不每次創建新的emp對象,並添加到列表中,它也覆蓋列表中的前一個值。此
的解決方案是
// fetching data from data table
foreach (DataRow row in ds.Tables[0].Rows)
{
// create new object every time
emp empobj = new emp();
// initialize emp object
empobj.emp_name = row["emp_name"].ToString();
empobj.emp_id = (int)row["emp_id"];
// add empobject to emp list
emplist.add(empobj);
}
任何一個可以告訴我爲什麼會這樣呢?
在第一個示例中,您將值分配給同一個對象。所以,價值觀正在被覆蓋。 – NomadTraveler
我改變了你的帖子的標題 - 如果你不喜歡這個改變,隨時恢復/編輯。 –