将单个或多个项目添加到列表

时间:2019-06-24 13:12:31

标签: c# list polymorphism

我上了这个课:

public class Itemcollection : Item
{
    public List<Item> Items{ get; set; }
}

现在我将商品添加到列表中

if (item is Itemcollection collection)
{
   list.AddRange(collection.items);
}
else
{
    list.Add(item);
}

有没有一种方法可以避免对象检查(如果(项目是Itemcollection集合)),而可以通过更通用的方式或类似的方式进行。

2 个答案:

答案 0 :(得分:0)

这取决于对象 item 是什么类型,但是我认为如果没有类型检查,就无法做到这一点。您可以将代码包装在一个方法中,然后在此处进行检查。另一种选择是方法重载。

答案 1 :(得分:0)

请确保您的所有商品 all 中都包含商品的集合,而不是让某些商品具有Items集合,而有些商品则没有。然后,如果对象在逻辑上表示单个值而不是值的集合,则只需使该集合包含单个项即可。这样,在这里(和其他地方)处理项目的代码中,您可以处理所有项目的 all ,如果“所有项目”最终都是一个项目,就这样吧。