C# 为什么metod外接程序列表修改列表的所有元素?
我正在制作一个元素列表,但每次它迭代时都会修改列表中的所有元素 我一步一步地执行代码,添加和检查,然后我意识到我正在检索的数据是可以的,但是当我向列表中添加一个元素时,它会修改所有现有的元素 我有这门课C# 为什么metod外接程序列表修改列表的所有元素?,c#,list,C#,List,我正在制作一个元素列表,但每次它迭代时都会修改列表中的所有元素 我一步一步地执行代码,添加和检查,然后我意识到我正在检索的数据是可以的,但是当我向列表中添加一个元素时,它会修改所有现有的元素 我有这门课 public class AREntity { public DateTime? FI { get; set; } public DateTime? FS { get; set; } } 这就是我正在执行的代码 List<AREntity> list
public class AREntity
{
public DateTime? FI { get; set; }
public DateTime? FS { get; set; }
}
这就是我正在执行的代码
List<AREntity> list = new List<AREntity>();
MySqlConnection Conn = new MySqlConnection();
Conn.ConnectionString = sqlCnn;
Conn.Open();
try
{
String CSql = "LAR";
MySqlCommand cmd = new MySqlCommand(CSql, Conn);
cmd.CommandType = CommandType.StoredProcedure;
MySqlDataReader drAR = cmd.ExecuteReader();
AREntity ARE = new AREntity();
while (drAR.Read())
{
ARE.FI = drAR.GetValue(2);
ARE.FS = drAR.GetValue(3);
list.Add(ARE);
}
整个列表将更改您正在向列表中添加相同的AREntity实例,并仅更改其值。将对象创建移动到循环内:
while (drAR.Read())
{
AREntity ARE = new AREntity();
ARE.FI = drAR.GetValue(2);
ARE.FS = drAR.GetValue(3);
list.Add(ARE);
}
while (drAR.Read())
{
AREntity ARE = new AREntity();
ARE.FI = drAR.GetValue(2);
ARE.FS = drAR.GetValue(3);
list.Add(ARE);
}