有没有一种常见的方法来将类型为T
的单个项传递给需要IEnumerable<T>
参数的方法?语言是C#,框架版本2.0。
目前我使用的是一个辅助方法(它是LINQ2.0,所以我有一大堆类似于.Net的造型/投影辅助方法),但这看起来很愚蠢:
public static class IEnumerableExt
{
// usage: IEnumerableExt.FromSingleItem(someObject);
public static IEnumerable<T> FromSingleItem<T>(T item)
{
yield return item;
}
}
当然,另一种方法是创建并填充List<T>
或Array
,然后传递它而不是IEnumerable<T>
。
将编辑为扩展方法,可以将其命名为:
public static class IEnumerableExt
{
// usage: someObject.SingleItemAsEnumerable();
public static IEnumerable<T> SingleItemAsEnumerable<T>(this T item)
{
yield return item;
}
}
我是不是漏掉了什么?
Edit2我们发现someObject.Yield()
(正如@Peter在下面的评论中建议的那样)是这种扩展方法的最佳名称,主要是为了简洁,所以如果有人想要使用它,这里有它和XML注释:
public static class IEnumerableExt
{
/// <summary>
/// Wraps this object instance into an IEnumerable<T>
/// 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<T> consisting of a single item. </returns>
public static IEnumerable<T> Yield<T>(this T item)
{
yield return item;
}
}
https://stackoverflow.com/questions/1577822
复制相似问题