微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

内置构造数组及其每个元素的方法?

如何解决内置构造数组及其每个元素的方法?

经常我想构造一个引用类型的数组,然后构造每个元素(并且数组大小不一定是硬编码的),所以我写了一个实用函数来做到这一点:

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 可能有更好的方法,但效果很好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。