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()
假设我的代码中有以下方法:
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()