using System.Collections.Generic;
public static void Main()
var queue = new ConcurrentQueue<int>();
Console.WriteLine(queue.Average());
public static class ExtensionMethodsForQueue {
public static double Average(this ConcurrentQueue<int> queue)
return queue.CopyToArray().Average();
public class ConcurrentQueue<T>{
private readonly object syncLock = new object();
this.queue = new Queue<T>();
public void Enqueue(T obj)
T[] values = new T[queue.Count];
public static ConcurrentQueue<T> InitFromArray(IEnumerable<T> initValues)
var queue = new ConcurrentQueue<T>();
foreach(T val in initValues)