c#支持多个和单个对象操作

时间:2016-04-12 20:54:02

标签: c# conventions

说我的代码中有以下方法:

public bool RemoveItem(Item item)
{ 
   // Logic to remove a single item
}

public bool RemoveItems(List<Item> items)
{
   // Logic for removing multiple items. Running over all items and calling RemoveItem will be inefficient in my case
}

public bool AddItem(Item item)
{
  // Logic for adding single item
}

public bool AddItems(List<Item> items)
{
  // Logic for adding multiple items
}

有没有办法阻止每个操作有多种方法?我有很多这样的方法。我希望以某种方式将每一对方法组合成一个方法。这样做有一个很好的方法吗?

我可以创建一个包含单个项目的列表,并且仅支持将列表作为参数的方法,但对我来说似乎很难看。

其他人如何做到这一点?

3 个答案:

答案 0 :(得分:8)

您可以使用params关键字

创建方法
public bool AddItems(params Item[] items)
{
    ...
}

public bool RemoveItems(params Item[] items)
{
   ...
}

这允许您调用以下方法:

AddItems(item);
AddItems(item1, item2, ...);
or
AddItems(new Item[] { ... });

答案 1 :(得分:4)

你的方法是对的。这是它在列表类中实现的方式,其中有Add()和AddRange()

答案 2 :(得分:0)

最好每次都获得一份清单,无论你有一件物品还是多件物品都可以处理。