Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么metod外接程序列表修改列表的所有元素?_C#_List - Fatal编程技术网

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);
}