List.ForEach问题

我2我骄傲 2016-02-25 03:15:08
  class Program
{
static void Main(string[] args)
{
List<Student> students = new List<Student>()
{
new Student() {Name ="1111",Adress ="aaaa1"},
new Student() {Name ="2222",Adress ="aaaa2"}
};

Student s = new Student()
{
Name = "cccccc",
Adress = "dddddd"
};

students.ForEach(m =>
{
m = s;
});
}
}

public class Student
{
public string Name { get; set; }
public string Adress { get; set; }
}


m = s; 这样赋值 students 里的两条记录并不会变,难道必须
一个个赋值么,

students.ForEach(m =>
{
m.Name = s.Name;
m.Adress = s.Adress;

});

这样才是OK的。
...全文
321 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
我2我骄傲 2016-02-25
  • 打赏
  • 举报
回复
引用 10 楼 sp1234 的回复:
至于说对于引用的自定义对象,假设m和s变量分别引用两个 Student 类型的对象实例,那么代码
m = s;
并不是什么属性赋值,这是给变量(引用)赋值。 这部分也先要搞清楚“赋值”的含义。
谢谢 SP 耐心讲解。
我2我骄傲 2016-02-25
  • 打赏
  • 举报
回复
谢谢大家,已经改成for循环了,, 以前一直没注意到此问题。。。谢谢。
  • 打赏
  • 举报
回复
至于说对于引用的自定义对象,假设m和s变量分别引用两个 Student 类型的对象实例,那么代码
m = s;
并不是什么属性赋值,这是给变量(引用)赋值。 这部分也先要搞清楚“赋值”的含义。
qbilbo 2016-02-25
  • 打赏
  • 举报
回复
引用 5 楼 jmlovews 的回复:
那如何更好的处理呢。
不用迭代不就好了.... 比如:
for (int i = 0; i < students.Count; i++)
{
       students[i] = s;
}
Poopaye 2016-02-25
  • 打赏
  • 举报
回复
必须一个个赋值
  • 打赏
  • 举报
回复
static void Main(string[] args)
{
    List<Student> students = new List<Student>()
    {
        new Student() {Name ="1111",Adress ="aaaa1"},
        new Student() {Name ="2222",Adress ="aaaa2"}
    };

    Student s = new Student()
    {
        Name = "cccccc",
        Adress = "dddddd"
    };

    for (var i = 0; i < students.Count; ++i)
        students[i] = s;
}
我2我骄傲 2016-02-25
  • 打赏
  • 举报
回复
那如何更好的处理呢。
绿豆丫 2016-02-25
  • 打赏
  • 举报
回复
m s 怎么也是个类吧,类中的属性计算机还不会智能到给你自动对应了。
qbilbo 2016-02-25
  • 打赏
  • 举报
回复
迭代变量无法赋值。
我2我骄傲 2016-02-25
  • 打赏
  • 举报
回复
自己再顶一下。。。
我2我骄傲 2016-02-25
  • 打赏
  • 举报
回复
为什么会没人。
我2我骄傲 2016-02-25
  • 打赏
  • 举报
回复
自己顶一下咯。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧