构建数组及其每个元素的内置方式?
Built in way to construct array and each of its elements?
我经常想构造一个引用类型的数组,然后构造每个元素(数组大小不一定是硬编码的),所以我写了一个实用函数来做:
static TElem[] ConstructArray<TElem> (int length) where TElem : new() {
TElem[] arr = new TElem[length];
for (int k = 0; k < arr.Length; ++k)
arr[k] = new TElem();
return arr;
}
用法示例(runnable):
class Example {
const int NumberOfLists = 3;
List<int>[] listInit = ConstructArray<List<int>>(NumberOfLists);
}
我的问题只是:C# (8.0) 是否有构建数组然后构建每个元素的内置方法,这样我就可以不再携带那个小实用函数了?
注意:我不是在找这个:
X[] array = new X[] { new X(), new X(), new X() };
这会否定这里主要的便利目标。
如果您不介意使用 Linq
,这里有一个方便的单行代码:
MyClass[] arrcalc =
System.Linq.Enumerable.Range(0, count).Select(x => new MyClass()).ToArray();
使用 Linq 可能有更好的方法,但这很好用。
我经常想构造一个引用类型的数组,然后构造每个元素(数组大小不一定是硬编码的),所以我写了一个实用函数来做:
static TElem[] ConstructArray<TElem> (int length) where TElem : new() {
TElem[] arr = new TElem[length];
for (int k = 0; k < arr.Length; ++k)
arr[k] = new TElem();
return arr;
}
用法示例(runnable):
class Example {
const int NumberOfLists = 3;
List<int>[] listInit = ConstructArray<List<int>>(NumberOfLists);
}
我的问题只是:C# (8.0) 是否有构建数组然后构建每个元素的内置方法,这样我就可以不再携带那个小实用函数了?
注意:我不是在找这个:
X[] array = new X[] { new X(), new X(), new X() };
这会否定这里主要的便利目标。
如果您不介意使用 Linq
,这里有一个方便的单行代码:
MyClass[] arrcalc =
System.Linq.Enumerable.Range(0, count).Select(x => new MyClass()).ToArray();
使用 Linq 可能有更好的方法,但这很好用。