具有一个成员的列表如何有用?

时间:2012-12-21 23:26:13

标签: c# .net generic-collections

我读了一篇SO,要求用最简单的方法创建一个包含一个成员的列表。

Quick way to turn object into single-element list?

这给我提出了一个问题,这什么时候有用?

当我将List<T>与单个成员仅用于T变量本身时,我想不出一个例子。

有人可以解释或提供一个例子吗?

4 个答案:

答案 0 :(得分:3)

您可能必须实现一个需要返回对象集合的接口。您有时可能希望返回单个对象,但仍需要完成接口,一种方法是创建包含单个对象的列表,然后返回列表。

class ConstantValue : IValueProvider
{
    public override IList<int> getValues()
    {
         return new List<int> { 1 };
    }
}

答案 1 :(得分:2)

通常,当您拥有恰好包含一个成员的逻辑元素集合时会发生这种情况。例如,您可能有一个House类,其中包含Room项集合,但OneRoomSchoolhouse类在其Rooms集合中只有一个对象。

作为另一个例子,您可能有一个带有此签名的方法:

void LogNewItems(List<Item> newItems);

如果您只有一个项目,则必须通过它:

LogNewItems(new List<Item> { item });

实际上,如果您正在设计项目日志记录API,则可以创建一种便捷方法,以便开发人员不必这样做。该方法可能如下所示:

void LogNewItem(Item item)
{
    LogNewItems(new List<Item> { item });
}

答案 2 :(得分:0)

因此,我不必执行DoSomethingWithAListOfFoo(List<Foo> items)DoSomethingWithAFoo(Foo item)DoSomethingWithAFoo只需创建一个项目列表并将其传递给DoSomethingWithAListOfFoo

答案 3 :(得分:0)

因为已经没有可用的重载IEnumerable<T> Except(T)