这会创建1000个人对象吗?
public class Person
{
public string FirstName;
public string LastName;
}
Person person;
for(int i = 0; i < 1000; i++)
{
person = new Person();
}
答案 0 :(得分:4)
代码创建1000个人对象,但仅保留对最后创建的对象的引用。所有其他的将在内存中存在一段时间,但是没有引用和无法使用,因此在某些时候将由垃圾收集器回收。
(确切地说,给定的代码并没有实际告诉我们最后一个引用将存活多长时间。如果person
未在给定代码之外的任何点引用,它也将循环后有资格收集,并可在此后的任何时间收集。)
答案 1 :(得分:3)
答案 2 :(得分:0)
您正在创建新的Person对象1000次。在每个循环周期中,您将新对象分配给person变量。变量只能保留一个对象,因此以前创建的所有对象都将丢失(通过垃圾收集器)
如果要创建1000个人对象并将其分配给其他变量,则应在C#中使用集合。例如:
Person[] persons = new Person[1000];
for (int i = 0; i < 1000; i++)
{
persons[i] = new Person();
}
答案 3 :(得分:0)
此代码将Person
实例化为堆1000次。结果999将是垃圾,但最后一个分配给person
变量