返回c#中的对象列表
本文关键字:对象 列表 返回 | 更新日期: 2023-09-27 18:11:44
我需要在函数中构建一个列表,然后将其返回给另一个列表变量问题是:在函数内部,列表是正确构建的,但当我将它返回到外部变量时,似乎外部列表的所有元素都与最后一个添加到函数内部的元素相似。原因是什么?
这是我的代码:
List<stu> fillObject(SqlDataReader rd)
{
List<stu> stList = new List<stu>();
stu stObj = new stu();
while (rd.Read())
{
stObj.username = rd["username"].ToString();
stObj.password = rd["password"].ToString();
stObj.fname = rd["fname"].ToString();
stObj.lname = rd["lname"].ToString();
stObj.faculty = rd["faculty"].ToString();
stList.Add(stObj);
}
return stList;
}
下面是函数的调用:
var friendsList = fillObject(rd);
所以循环'friendList'会得到与builder函数中添加的最后一个对象相同的对象。
试试这个
List<stu> fillObject(SqlDataReader rd)
{
List<stu> stList = new List<stu>();
while (rd.Read())
{
stu stObj = new stu();
stObj.username = rd["username"].ToString();
stObj.password = rd["password"].ToString();
stObj.fname = rd["fname"].ToString();
stObj.lname = rd["lname"].ToString();
stObj.faculty = rd["faculty"].ToString();
stList.Add(stObj);
}
return stList;
}
您缺少的是在while
中初始化stu
,因为只有一个stu
对象被一次又一次地添加到stList
中。
您需要在循环中创建New STU对象,否则您将不断更改相同的引用对象
Try This:
List<stu> fillObject(SqlDataReader rd)
{
List<stu> stList = new List<stu>();
//stu stObj = new stu();
while (rd.Read())
{
stList.Add(new stu
{
username = rd["username"].ToString(),
password = rd["password"].ToString(),
fname = rd["fname"].ToString(),
lname = rd["lname"].ToString(),
faculty = rd["faculty"].ToString()
});
}
return stList;
}