0

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

将对象转换为单元素列表的快速方法?

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

List<T>当我将 a与单个成员一起使用而不是T变量本身时,我想不出一个例子。

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

4

4 回答 4

3

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

class ConstantValue : IValueProvider
{
    public override IList<int> getValues()
    {
         return new List<int> { 1 };
    }
}
于 2012-12-21T23:28:58.140 回答
2

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

另一个例子,你可能有一个带有这个签名的方法:

void LogNewItems(List<Item> newItems);

如果您只有一项,则必须这样传递它:

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

事实上,如果您正在设计 item-logging API,您可能会创建一个方便的方法,这样开发人员就不必这样做了。该方法可能如下所示:

void LogNewItem(Item item)
{
    LogNewItems(new List<Item> { item });
}
于 2012-12-21T23:34:10.957 回答
0

所以我不必拥有DoSomethingWithAListOfFoo(List<Foo> items)ANDDoSomethingWithAFoo(Foo item)实现。 DoSomethingWithAFoo可以简单地创建单个项目列表并将其传递给DoSomethingWithAListOfFoo.

于 2012-12-21T23:42:51.940 回答
0

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

于 2013-11-01T21:13:34.973 回答