我读了一篇SO,要求用最简单的方法创建一个包含一个成员的列表。
Quick way to turn object into single-element list?
这给我提出了一个问题,这什么时候有用?
当我将List<T>
与单个成员仅用于T
变量本身时,我想不出一个例子。
有人可以解释或提供一个例子吗?
答案 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)
。