using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
public class Test {
public static void Main() {
var A = new VisibleIterator("A");
var B = new VisibleIterator("B");
var C = new VisibleIterator("C");
var D = new VisibleIterator("D");
var foo = (A.Union(B).Union(C).Union(D)).ToList();
Console.WriteLine("---");
var bar = (A.Union(B.Union(C.Union(D)))).ToList();
Console.WriteLine("---");
var baz = (D.Union(C.Union(B.Union(A)))).ToList();
}
}
class VisibleIterator : IEnumerable<string> {
private readonly string name;
public VisibleIterator(string name) {
this.name = name;
}
public IEnumerator<string> GetEnumerator() {
for (var i = 0 ; i != 4 ; i++) {
var res = name+i;
Console.WriteLine(res);
yield return res;
}
}
IEnumerator IEnumerable.GetEnumerator() {
return GetEnumerator();
}
}