c# - 内置构造数组及其每个元素的方法?
问题描述
通常我想构造一个引用类型数组,然后构造每个元素(数组大小不一定是硬编码的),所以我编写了一个实用函数来做到这一点:
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;
}
示例用法(可运行):
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 可能有更好的方法,但这很好用。
推荐阅读
- java - Spring Boot 错误没有可用的“javax.persistence.EntityManagerFactory”类型的合格bean
- javascript - 错误:超过 2000 毫秒的超时。承诺在测试运行前不返回
- postgresql - 如何将表作为 argtype 传递给 postgres 函数?
- c# - 写入文件的结果没有按预期工作
- sql - 如何从 Postgres 的 json 列中提取键和值?
- java - Android Studio sqlite 更新
- macos - 如何在 OS X/linux 上自动解决 GUI?
- reactjs - 如何根据用户是否登录使我的 Web 应用程序的主页看起来不同
- javascript - 如何使用 nginx 和 302 重定向缓存 bust ES6 javascript 模块
- javascript - 动态创建的组件在模型更改时未绑定到模型