0

我有 3 个不同的类(1 个父类和 2 个子类),并且我创建了一个异构数组:

Parent[] parentArray =  new Parent[9];

我想按顺序用 3 个 Parent 对象、3 个 child1 对象和 3 个 child2 对象填充这个数组。

我想知道是否有比这样做更优雅的方法:

parentArray[0] = new Parent();

parentArray[1] = new Parent();

parentArray[2] = new Parent();

parentArray[3] = new Child1();

parentArray[4] = new Child1();

....

parentArray[9] = new Child2();

谢谢!

4

3 回答 3

1

个人我只是认为你应该使用对象初始化器。但是对于纯粹的无聊,您可以使用 Linq 和通用工厂方法。

// Given
public static IEnumerable<T> Factory<T>(int count) where T : Parent, new() 
     => Enumerable.Range(0, count).Select(x => new T());

...

// Usage
var array = Factory<Parent>(3)
              .Union(Factory<Child1>(3))
              .Union(Factory<Child2>(3))
              .ToArray();
于 2019-02-03T07:26:19.437 回答
1

像这样?

var parentArray = new Parent[]
{
    new Parent(),
    new Parent(),
    new Parent(),
    new Child1(),
    ...
};
于 2019-02-03T04:29:25.233 回答
0

在这种情况下,您希望重复执行一定数量的操作。循环通常用于执行此操作。因为您正在初始化一个数组,所以for循环非常适合,因为它们公开了一个可用于索引数组的整数。在您的场景中,您可以使用三个这样的循环。

Parent[] parentArray = new Parent[9];

for (int i = 0; i < 3; i++)
{
    parentArray[i] = new Parent();
}

for (int i = 3; i < 6; i++)
{
    parentArray[i] = new Child1();
}

for (int i = 6; i < 9; i++)
{
    parentArray[i] = new Child2();
}
于 2019-02-03T04:45:56.237 回答