static void Main(string[] args) { var rb = new RingBufferSelector <int>(5); Dump(ref rb); for (int i = 0; i < 3; i++) { rb.Add(i); } Dump(ref rb); Dump(ref rb, true); //for (int i = 0; i < rb.Count; i++) // Console.WriteLine("{0} {1} -{0} {2}",i, rb[i],rb[-i]); for (int i = 3; i <= 11; i++) { rb.Add(i); } Dump(ref rb); Dump(ref rb, true); //for (int i = 0; i < rb.Count; i++) // Console.WriteLine("{0} {1} -{0} {2}", i, rb[i], rb[-i]); var se = rb.GetSelector(even); while (se.MoveNext()) { Console.Write("{0} ", se.Current); } Console.ReadLine(); }
static void Dump <T>(ref RingBufferSelector <T> rb, bool reverse = false) { if (reverse) { var re = rb.GetReverseEnumerator(); while (re.MoveNext()) { Console.Write("{0} ", re.Current); } } else { foreach (var i in rb) { Console.Write("{0} ", i); } } Console.WriteLine(""); }