C# 一个只有一个成员的列表如何有用?

C# 一个只有一个成员的列表如何有用?,c#,.net,generic-collections,C#,.net,Generic Collections,我读了一篇SO,它要求用最简单的方法创建一个只有一个成员的列表 这给我提出了一个问题,这什么时候有用 我想不出一个例子,当我在t变量本身上使用带有单个成员的列表时 有人可以解释或提供一个例子吗?您可能需要实现一个需要返回对象集合的接口。有时,您可能希望返回单个对象,但仍然需要完成接口,其中一种方法是创建一个包含单个对象的列表,然后返回该列表 class ConstantValue : IValueProvider { public override IList<int> g

我读了一篇SO,它要求用最简单的方法创建一个只有一个成员的列表

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

我想不出一个例子,当我在
t
变量本身上使用带有单个成员的
列表时


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

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

class ConstantValue : IValueProvider
{
    public override IList<int> getValues()
    {
         return new List<int> { 1 };
    }
}
class ConstantValue:IValueProvider
{
公共覆盖IList getValues()
{
返回新列表{1};
}
}

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

class ConstantValue : IValueProvider
{
    public override IList<int> getValues()
    {
         return new List<int> { 1 };
    }
}
class ConstantValue:IValueProvider
{
公共覆盖IList getValues()
{
返回新列表{1};
}
}

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

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

void LogNewItems(List<Item> newItems);
void LogNewItems(列出newItems);
如果您只有一个项目,则必须通过以下步骤:

LogNewItems(new List<Item> { item });
LogNewItems(新列表{item});
事实上,如果您正在设计项目日志API,您可能会创建一个方便的方法,这样开发人员就不必这样做。该方法可以如下所示:

void LogNewItem(Item item)
{
    LogNewItems(new List<Item> { item });
}
void LogNewItem(项目)
{
LogNewItems(新列表{item});
}

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

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

void LogNewItems(List<Item> newItems);
void LogNewItems(列出newItems);
如果您只有一个项目,则必须通过以下步骤:

LogNewItems(new List<Item> { item });
LogNewItems(新列表{item});
事实上,如果您正在设计项目日志API,您可能会创建一个方便的方法,这样开发人员就不必这样做。该方法可以如下所示:

void LogNewItem(Item item)
{
    LogNewItems(new List<Item> { item });
}
void LogNewItem(项目)
{
LogNewItems(新列表{item});
}

因此我不必有
DoSomethingWithAListOfFoo(列表项)
DoSomethingWithAFoo(Foo项)
实现
DoSomethingWithAFoo
只需创建一个项目列表,并将其传递给
DoSomethingWithAFoo
,这样我就不必有
DoSomethingWithAFoo(列表项目)
DoSomethingWithAFoo(Foo项目)
实现
DoSomethingWithAFoo
只需创建一个项目列表,并将其传递给
DoSomethingWithAListOfFoo
,因为没有重载
IEnumerable Except(T)
可用。

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

显然,该列表可能会在以后修改。同样,OP错误地使用了术语“singleton”,这与singleton模式无关。我只是想找一些例子或理由来说明为什么要将
列表
与单个成员一起使用。而且,单个对象,比如属性,可以说比列表的单个成员更容易修改。@JefferyKhan,但您可能正在实现一个您无法控制其设计的接口,即。,来自另一个库。显然,该列表可能会在以后修改。同样,OP错误地使用了术语“singleton”,这与singleton模式无关。我只是想寻找一些例子或理由,说明为什么要将
列表
与单个成员一起使用。此外,单个对象(例如属性)可以比列表的单个成员更容易修改。@JefferyKhan但您可能正在实现一个您无法控制其设计的接口,即从另一个库中进行修改。+1。集合中的0、1、2项是集合中非常常见的情况。如果可能在实际使用中,考虑使用iQueDaby而不是列表,而不是可以使用<代码>枚举。空< /代码>和<代码>枚举。重复< /代码>相应地表示0和1项。+ 1。集合中的0、1、2项是集合中非常常见的情况。如果可能在实际使用中,考虑使用iQueDaby而不是列表,而不是可以使用<代码>枚举。空< /代码>和<代码>枚举。重复< /代码>相应地表示0和1项。这是有意义的,这正是我所要寻找的。很好的例子。谢谢。@JefferyKhan不客气。我还在问题的顶部添加了一个更一般的答案和另一个例子。这很有意义,也正是我想要的。很好的例子。谢谢。@JefferyKhan不客气。我还在问题的顶部添加了一个更一般的答案和另一个示例。