我想编写一个扩展方法(以流畅的语法使用它),以便如果序列是:
List< int> lst = new List< int>(){1,2,3 };
我想重复 3 次(例如)。所以输出将是 123123123
我写了这个:
public static IEnumerable<TSource> MyRepeat<TSource>(this IEnumerable<TSource> source,int n)
{
return Enumerable.Repeat(source,n).SelectMany(f=>f);
}
现在我可以这样做了:
lst.MyRepeat(3)
输出 :
问题 :
我不应该在扩展方法中使用 Yield 吗?我试过yield return
了,但它在这里不起作用。为什么会这样,我应该使用它。
编辑
在 Ant 的回答之后,我将其更改为:
public static IEnumerable<TSource> MyRepeat<TSource>(this IEnumerable<TSource> source,int n)
{
var k=Enumerable.Repeat(source,n).SelectMany(f=>f);
foreach (var element in k)
{
yield return element;
}
}
但是有什么区别吗?