作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
是否有无限重复可枚举的可枚举扩展方法?
例如,给定一个返回的枚举:["a", "b", "c"]。我想要一个返回无限重复序列的方法 ["a", "b", "c", "a", "b", "c", "a", "b", "c"... ]
这听起来有点像 Observable.Repeat ,除了我想对 IEnumerables 进行操作。
Enumerable.Repeat仅从单个元素生成枚举。
最佳答案
我不知道 LINQ 中内置了什么,但是真的可以很容易地创建自己的东西:
public static IEnumerable<T> RepeatIndefinitely<T>(this IEnumerable<T> source)
{
while (true)
{
foreach (var item in source)
{
yield return item;
}
}
}
请注意,这会多次计算 source
- 您可能希望让它只执行一次,创建一个副本:
public static IEnumerable<T> RepeatIndefinitely<T>(this IEnumerable<T> source)
{
var list = source.ToList();
while (true)
{
foreach (var item in list)
{
yield return item;
}
}
}
注意事项:
StringBuilder
引用,那么对对象本身的任何更改仍然可见。关于c# - 无限期地重复可枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24181656/
我是一名优秀的程序员,十分优秀!