c#同时支持多对象和单对象操作

c# support both multiple and single object operations

假设我的代码中有以下方法:

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
}

有没有办法避免每个操作有多个方法?我有很多这样的方法。我希望以某种方式将每对方法组合成一个方法..有没有好的方法呢?

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

其他人是怎么做到的?

您可以使用 params 关键字创建方法:

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

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

这允许您像这样调用这些方法:

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

无论你有一个还是多个项目,最好每次都得到一个列表,并在一个函数中处理。

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