为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 c 中优雅地填充异构数组#

如何在 c 中优雅地填充异构数组#

C#
侃侃无极 2022-08-20 17:30:23
我有3个不同的类(1个父类和2个子类),并且我创建了一个异构数组:Parent[] parentArray =  new Parent[9];我想按此顺序用 3 个父对象、3 个子 1 对象和 3 个子 2 对象填充此数组。我想知道是否有比这样做更优雅的方法:parentArray[0] = new Parent();parentArray[1] = new Parent();parentArray[2] = new Parent();parentArray[3] = new Child1();parentArray[4] = new Child1();....parentArray[9] = new Child2();谢谢!
查看完整描述

3 回答

?
森栏

TA贡献1810条经验 获得超5个赞

个人我只是认为你应该使用对象初始值设定项。但是,对于纯粹的无聊,您可以使用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();


查看完整回答
反对 回复 2022-08-20
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

喜欢这个?


var parentArray = new Parent[]

{

    new Parent(),

    new Parent(),

    new Parent(),

    new Child1(),

    ...

};


查看完整回答
反对 回复 2022-08-20
?
哔哔one

TA贡献1854条经验 获得超8个赞

在此情况下,您希望重复执行一定数量的操作。循环通常用于执行此操作。由于您正在初始化数组,因此循环非常适合,因为它们公开了可用于为数组编制索引的整数。在您的方案中,可以使用三个这样的循环。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();

}


查看完整回答
反对 回复 2022-08-20
  • 3 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号