首页
学习
活动
专区
工具
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
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1577822

复制
相关文章

相似问题

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