void Main()
{
var queue = new Queue<int>();
for (int i = 0; i < 10; i++) { queue.Enqueue(i); }
string.Join(",", queue).Dump(); /* 0,1,2,3,4,5,6,7,8,9 */
var take = queue.EnumerateDequeue().Take(4).ToList();
string.Join(",", take).Dump(); /* 0,1,2,3 */
string.Join(",", queue).Dump(); /* 4,5,6,7,8,9 */
var take2 = queue.EnumerateDequeue().Take(40).ToList();
string.Join(",", take2).Dump(); /* 4,5,6,7,8,9 */
string.Join(",", queue).Dump(); /* */
}
public static class QueueExtensions
{
public static IEnumerable<T> EnumerateDequeue<T>(this Queue<T> source)
{
while (source.Count > 0) { yield return source.Dequeue(); }
}
public static IEnumerable<T> EnumerateDequeue<T>(this ConcurrentQueue<T> source)
{
T outValue;
while (source.TryDequeue(out outValue)) { yield return outValue; }
}
}
2019-07-21 17:21
C# 讓 Dequeue 更方便的擴充方法
訂閱:
張貼留言 (Atom)
0 回應:
張貼留言