fork download
  1. public static T[] TupleToArray<T>(this IStructuralComparable tuple)
  2. {
  3. return EnumerateTuple<T>(tuple).ToArray();
  4. }
  5.  
  6. public static IEnumerable<T> EnumerateTuple<T>(this IStructuralComparable tuple)
  7. {
  8. if (tuple is T[] array) {
  9. foreach (var item in array) { yield return item; }
  10. }
  11. else if ( tuple is ValueTuple) { yield break; }
  12. else if (tuple is ValueTuple<T> t1) { yield return t1.Item1; }
  13. else if (tuple is ValueTuple<T,T> t2) { yield return t2.Item1; yield return t2.Item2; }
  14. else if (tuple is ValueTuple<T,T,T> t3) { yield return t3.Item1; yield return t3.Item2; yield return t3.Item3; }
  15. else if (tuple is ValueTuple<T, T, T, T> t4) { yield return t4.Item1; yield return t4.Item2; yield return t4.Item3; yield return t4.Item4; }
  16. else if (tuple is ValueTuple<T, T, T, T, T> t5) { yield return t5.Item1; yield return t5.Item2; yield return t5.Item3; yield return t5.Item4; yield return t5.Item5; }
  17. else if (tuple is ValueTuple<T, T, T, T, T, T> t6) { yield return t6.Item1; yield return t6.Item2; yield return t6.Item3; yield return t6.Item4; yield return t6.Item5; yield return t6.Item6; }
  18. else if (tuple is ValueTuple<T, T, T, T, T, T, T> t7) { yield return t7.Item1; yield return t7.Item2; yield return t7.Item3; yield return t7.Item4; yield return t7.Item5; yield return t7.Item6; yield return t7.Item7; }
  19. else foreach(var item in EnumerateTuple8<T>(tuple)) { yield return item; }
  20. }
  21.  
  22. private static IEnumerable<T> EnumerateTuple8<T>(this IStructuralComparable tuple)
  23. {
  24. dynamic d = tuple;
  25.  
  26. yield return d.Item1;
  27. yield return d.Item2;
  28. yield return d.Item3;
  29. yield return d.Item4;
  30. yield return d.Item5;
  31. yield return d.Item6;
  32. yield return d.Item7;
  33. foreach(var item in EnumerateTuple<T>(d.Rest)) { yield return item; }
  34. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cs(1,22): error CS1525: Unexpected symbol `T', expecting `class', `delegate', `enum', `interface', `partial', or `struct'
Compilation failed: 1 error(s), 0 warnings
stdout
Standard output is empty