【发布时间】:2012-03-09 03:31:31
【问题描述】:
给定一个类:
class clsPerson { public int x, y; }
有没有办法创建这些类的数组,每个元素都初始化为(默认)构造实例,而无需在 for 循环中手动执行,例如:
clsPerson[] objArr = new clsPerson[1000];
for (int i = 0; i < 1000; ++i)
objArr[i] = new clsPerson();
我可以缩短 N 个对象数组的声明和实例化吗?
【问题讨论】:
-
只是好奇:为什么将其命名为
clsPerson而不是Person?很明显,它是一个类——大多数东西都是类。 -
@Maniekb:Reed 的回答使用了三个循环。 Range中有一个循环,Select中有一个循环,ToArray中有一个循环。这比您需要的两个 more 循环。如果您想避免循环,那么您必须不惜一切代价避免使用 LINQ;它只不过是循环。
-
@phoog:延迟执行循环仍然是一个循环。这样看:假设您现在编写了 Range、Select 和 ToArray 的代码。 “for/foreach/while/etc”会在结果代码中出现多少次?我说如果“for”在代码中出现了 3 次,那么该代码中有 3 个循环。
-
@phoog:当然。但是那个内部枚举器只不过是一堆条件 goto,它们一遍又一遍地分支回到同一个地方,直到满足一个条件。这就是我定义一个循环的方式:一个有条件的 goto,它分支回到之前执行的代码,直到满足一个条件。
标签: c# arrays object constructor new-operator