fork(1) download
  1. using System;
  2. using System.Linq;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5.  
  6. public class Test {
  7. public static void Main() {
  8. var A = new VisibleIterator("A");
  9. var B = new VisibleIterator("B");
  10. var C = new VisibleIterator("C");
  11. var D = new VisibleIterator("D");
  12. Console.WriteLine("--- A.Union(B).Union(C).Union(D)");
  13. var foo = (A.Union(B).Union(C).Union(D)).ToList();
  14. Console.WriteLine("--- A.Union(B.Union(C.Union(D)))");
  15. var bar = (A.Union(B.Union(C.Union(D)))).ToList();
  16. Console.WriteLine("--- D.Union(C.Union(B.Union(A)))");
  17. var baz = (D.Union(C.Union(B.Union(A)))).ToList();
  18. }
  19. }
  20.  
  21. class VisibleIterator : IEnumerable<VisibleHasher> {
  22. private readonly string name;
  23. public VisibleIterator(string name) {
  24. this.name = name;
  25. }
  26. public IEnumerator<VisibleHasher> GetEnumerator() {
  27. for (var i = 0 ; i != 4 ; i++) {
  28. var res = name+i;
  29. Console.WriteLine("Iterating " + res);
  30. yield return new VisibleHasher(res);
  31. }
  32. }
  33. IEnumerator IEnumerable.GetEnumerator() {
  34. return GetEnumerator();
  35. }
  36. }
  37.  
  38. class VisibleHasher {
  39. private readonly string val;
  40.  
  41. public VisibleHasher(String val) {
  42. this.val = val;
  43. }
  44.  
  45. public override int GetHashCode() {
  46. Console.WriteLine("Hashing '" + val + "'");
  47. return val.GetHashCode();
  48. }
  49. }
Success #stdin #stdout 0.03s 15588KB
stdin
Standard input is empty
stdout
--- A.Union(B).Union(C).Union(D)
Iterating A0
Hashing 'A0'
Hashing 'A0'
Hashing 'A0'
Iterating A1
Hashing 'A1'
Hashing 'A1'
Hashing 'A1'
Iterating A2
Hashing 'A2'
Hashing 'A2'
Hashing 'A2'
Iterating A3
Hashing 'A3'
Hashing 'A3'
Hashing 'A3'
Iterating B0
Hashing 'B0'
Hashing 'B0'
Hashing 'B0'
Iterating B1
Hashing 'B1'
Hashing 'B1'
Hashing 'B1'
Iterating B2
Hashing 'B2'
Hashing 'B2'
Hashing 'B2'
Iterating B3
Hashing 'B3'
Hashing 'B3'
Hashing 'B3'
Iterating C0
Hashing 'C0'
Hashing 'C0'
Iterating C1
Hashing 'C1'
Hashing 'C1'
Iterating C2
Hashing 'C2'
Hashing 'C2'
Iterating C3
Hashing 'C3'
Hashing 'C3'
Iterating D0
Hashing 'D0'
Iterating D1
Hashing 'D1'
Iterating D2
Hashing 'D2'
Iterating D3
Hashing 'D3'
--- A.Union(B.Union(C.Union(D)))
Iterating A0
Hashing 'A0'
Iterating A1
Hashing 'A1'
Iterating A2
Hashing 'A2'
Iterating A3
Hashing 'A3'
Iterating B0
Hashing 'B0'
Hashing 'B0'
Iterating B1
Hashing 'B1'
Hashing 'B1'
Iterating B2
Hashing 'B2'
Hashing 'B2'
Iterating B3
Hashing 'B3'
Hashing 'B3'
Iterating C0
Hashing 'C0'
Hashing 'C0'
Hashing 'C0'
Iterating C1
Hashing 'C1'
Hashing 'C1'
Hashing 'C1'
Iterating C2
Hashing 'C2'
Hashing 'C2'
Hashing 'C2'
Iterating C3
Hashing 'C3'
Hashing 'C3'
Hashing 'C3'
Iterating D0
Hashing 'D0'
Hashing 'D0'
Hashing 'D0'
Iterating D1
Hashing 'D1'
Hashing 'D1'
Hashing 'D1'
Iterating D2
Hashing 'D2'
Hashing 'D2'
Hashing 'D2'
Iterating D3
Hashing 'D3'
Hashing 'D3'
Hashing 'D3'
--- D.Union(C.Union(B.Union(A)))
Iterating D0
Hashing 'D0'
Iterating D1
Hashing 'D1'
Iterating D2
Hashing 'D2'
Iterating D3
Hashing 'D3'
Iterating C0
Hashing 'C0'
Hashing 'C0'
Iterating C1
Hashing 'C1'
Hashing 'C1'
Iterating C2
Hashing 'C2'
Hashing 'C2'
Iterating C3
Hashing 'C3'
Hashing 'C3'
Iterating B0
Hashing 'B0'
Hashing 'B0'
Hashing 'B0'
Iterating B1
Hashing 'B1'
Hashing 'B1'
Hashing 'B1'
Iterating B2
Hashing 'B2'
Hashing 'B2'
Hashing 'B2'
Iterating B3
Hashing 'B3'
Hashing 'B3'
Hashing 'B3'
Iterating A0
Hashing 'A0'
Hashing 'A0'
Hashing 'A0'
Iterating A1
Hashing 'A1'
Hashing 'A1'
Hashing 'A1'
Iterating A2
Hashing 'A2'
Hashing 'A2'
Hashing 'A2'
Iterating A3
Hashing 'A3'
Hashing 'A3'
Hashing 'A3'