....
....
Employee employeeInfo;
for(int i =0; i<n;++i)
{
employeeInfo = new Employee();
employeeInfo.FirstName = arr[i].ToString();
employeeInfo.Age = i;
employeeList.Add(employeeInfo);
....
}
答案 0 :(得分:5)
对象没有名称。你拥有的是一个局部变量,它是对象的引用,并且该变量用于创建的每个对象。
您可以使用局部变量来跟踪当前对象,稍后在循环中将对象存储在集合中。
如果不在某处存储每个对象,则在将下一个对象分配给变量时,前一个对象将丢失。上一个对象仍然存在,但由于不再引用它,稍后垃圾收集器将删除它。
答案 1 :(得分:0)
根据您的代码段:
在每次迭代中,您创建一个新对象和前一个对象,由employeeInfo
引用
将有资格获得GC。
答案 2 :(得分:0)
如果您没有对您创建的employeeInfo执行任何其他操作,那么意味着您正在做一些无用的事情 - 创建未使用的对象=&gt;浪费时间分配内存
答案 3 :(得分:0)
employeeInfo = new Employee();//this is where you are "instantiating objects with the same name" in your for loop.
每次调用此loc时,employeeInfo对象中的先前值都将替换为对象的初始状态;这意味着当调用 new 时,employeeInfo的属性/变量将被默认值替换(由构造函数提供,如果有的话)。
答案 4 :(得分:0)
将变量视为一个框。您在框中放置一个新的Employee(),为其命名,将其添加到某个集合中。在循环的下一次迭代中,你放置框(抛弃对前一个Employee的引用,但这并不重要,因为你的集合仍然有引用)并在框中添加一个新的Employee()。垃圾收集器将清除任何不在盒子里的东西