首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将单个项目作为IEnumerable<T>传递

将单个项目作为IEnumerable<T>传递
EN

Stack Overflow用户
提问于 2009-10-16 12:40:17
回答 18查看 109.9K关注 0票数 430

有没有一种常见的方法来将类型为T的单个项传递给需要IEnumerable<T>参数的方法?语言是C#,框架版本2.0。

目前我使用的是一个辅助方法(它是LINQ2.0,所以我有一大堆类似于.Net的造型/投影辅助方法),但这看起来很愚蠢:

代码语言:javascript
复制
public static class IEnumerableExt
{
    // usage: IEnumerableExt.FromSingleItem(someObject);
    public static IEnumerable<T> FromSingleItem<T>(T item)
    {
        yield return item; 
    }
}

当然,另一种方法是创建并填充List<T>Array,然后传递它而不是IEnumerable<T>

编辑为扩展方法,可以将其命名为:

代码语言:javascript
复制
public static class IEnumerableExt
{
    // usage: someObject.SingleItemAsEnumerable();
    public static IEnumerable<T> SingleItemAsEnumerable<T>(this T item)
    {
        yield return item; 
    }
}

我是不是漏掉了什么?

Edit2我们发现someObject.Yield() (正如@Peter在下面的评论中建议的那样)是这种扩展方法的最佳名称,主要是为了简洁,所以如果有人想要使用它,这里有它和XML注释:

代码语言:javascript
复制
public static class IEnumerableExt
{
    /// <summary>
    /// Wraps this object instance into an IEnumerable&lt;T&gt;
    /// consisting of a single item.
    /// </summary>
    /// <typeparam name="T"> Type of the object. </typeparam>
    /// <param name="item"> The instance that will be wrapped. </param>
    /// <returns> An IEnumerable&lt;T&gt; consisting of a single item. </returns>
    public static IEnumerable<T> Yield<T>(this T item)
    {
        yield return item;
    }
}
EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2009-10-16 12:49:06

你的helper方法是最干净的方式,IMO。如果您传入一个列表或数组,那么一段不择手段的代码可能会强制转换它并更改内容,从而在某些情况下导致奇怪的行为。您可以使用只读集合,但这可能涉及更多的包装。我认为你的解决方案是最简洁的。

票数 108
EN

Stack Overflow用户

发布于 2009-10-16 12:45:20

好吧,如果这个方法需要一个IEnumerable,那么你必须传递一个列表,即使它只包含一个元素。

传球

代码语言:javascript
复制
new[] { item }

因为争论应该足够了,我想

票数 169
EN

Stack Overflow用户

发布于 2009-12-23 03:36:25

在C# 3.0中,您可以使用System.Linq.Enumerable类:

代码语言:javascript
复制
// using System.Linq

Enumerable.Repeat(item, 1);

这将创建一个仅包含您的项目的新IEnumerable。

票数 133
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1577822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档