gpt4 book ai didi

c# - 将单个项目作为 IEnumerable 传递

转载 作者:IT王子 更新时间:2023-10-29 03:27:58 25 4
gpt4 key购买 nike

是否有一种通用的方法来传递类型为 T 的单个项目?到一个需要 IEnumerable<T> 的方法范围?语言为C#,框架版本2.0。

目前我正在使用辅助方法(它是 .Net 2.0,所以我有一大堆类似于 LINQ 的转换/投影辅助方法),但这看起来很愚蠢:

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&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;
}
}

最佳答案

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

通过

new[] { item }

因为我认为参数应该足够了

关于c# - 将单个项目作为 IEnumerable<T> 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1577822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com