【问题标题】:How to initialize a 'NotNull' Array of a class in c# without loop?如何在没有循环的情况下在 c# 中初始化类的“NotNull”数组?
【发布时间】:2016-12-12 20:06:09
【问题描述】:

我想要类似的东西:

class Main{
   SomeClass[] classArray = new SomeClass[199];   // Problem --> All elements are null
   for(int i=0; i<classArray.Length; i++){
      classArray[i] = new SomeClass();
   }
}

class SomeClass{
   int x = 1;
   public SomeClass(){}
}

但没有循环,也没有做类似的事情:

SomeClass[] classArray = new SomeClass[] {new SomeClass(), new SomeClass(), ...}

这可能吗?

【问题讨论】:

  • 考虑使用List&lt;T&gt;
  • 使用 List 我还必须使用循环来添加固定数量的元素,或者我错了吗?

标签: c# arrays initialization


【解决方案1】:

Enumerable.Range 方法将生成给定范围内的整数集合。
Select 方法将为每个数字创建新实例。
ToArray 将枚举生成的集合并创建一个数组

var yourArray = Enumerable.Range(1, 199).Select(i => new SomeClass()).ToArray();

【讨论】:

  • @Jonesopolis, Repeat 将创建具有相同 SomeClass 实例的数组
  • 谢谢,这就是我想要的
【解决方案2】:

那是不可能的。你可以做几件导致循环的事情,但看起来不像循环。例如:

var list = Enumerable.Range(0, 199)
           .Select(_ => new SomeClass())
           .ToList();

【讨论】:

    猜你喜欢
    • 2011-04-03
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-08-27
    相关资源
    最近更新 更多