以最简单的方式实例化一个对象数组
本文关键字:一个对象 数组 实例化 方式 最简单 | 更新日期: 2023-09-27 18:24:55
给定一个类:
class clsPerson { public int x, y; }
有没有办法创建一个这些类的数组,每个元素都初始化为一个(默认)构造的实例,而不需要在像这样的for循环中手动执行:
clsPerson[] objArr = new clsPerson[1000];
for (int i = 0; i < 1000; ++i)
objArr[i] = new clsPerson();
我可以缩短N个对象数组的声明和实例化吗?
在这种情况下,必须为数组中的每个项运行构造函数。无论是否使用循环、集合初始值设定项或辅助方法,都必须访问数组中的每个元素。
如果你只是在寻找一个方便的语法,你可以使用以下
public static T[] CreateArray<T>(int count) where T : new() {
var array = new T[count];
for (var i = 0; i < count; i++) {
array[i] = new T();
}
return array;
}
clsPerson[] objArary = CreateArray<clsPerson>(1000);
您必须为每个项调用构造函数。如果不构造每个项,就无法分配数组并在项上调用类构造函数。
你可以使用从循环中缩短它(一点点)
clsPerson[] objArr = Enumerable.Range(0, 1000).Select(i => new clsPerson()).ToArray();
就我个人而言,我仍然会分配数组并在其中循环(和/或将其移动到辅助例程中),因为它非常清楚,而且仍然相当简单:
clsPerson[] objArr = new clsPerson[1000];
for (int i=0;i<1000;++i)
clsPerson[i] = new clsPerson();
如果这样做有意义,可以将class clsPerson
更改为struct Person
。struct
始终具有默认值。