exoteric said:I'll start out -
Tuple Syntax
a la (precise parenthesization not so important here)(1,2,3)Tuple Enumeration
Not a language feature but allow tuple to be enumerated (IEnumerable<T>) for both homogeneous and heterogeneous tuples, meaning these two cases would both be legal
foreach (var x in (1,2,3))
Console.WriteLine(x);foreach (var x in (1,"WTF",3))
Console.WriteLine(x);Where in the first case the tuple would be IEnumerable<int> and in the second case the tuple would be either IEnumerable<IDynamic> or IEnumerable<Object>.
I would be against tuple enumeration. A tuple is not a collection and should not be considered as such. If you really want that feature, you could build it yourself:
public static class TupleExtensions
{
public static IEnumerable<T> ToCollection<T>(this Tuple<T, T> tuple)
{
yield return tuple.Item1;
yield return tuple.Item2;
}
public static IEnumerable<object> ToCollection<T1, T2>(this Tuple<T1, T2> tuple)
{
yield return tuple.Item1;
yield return tuple.Item2;
}
public static IEnumerable<T> ToCollection<T>(this Tuple<T, T, T> tuple)
{
yield return tuple.Item1;
yield return tuple.Item2;
yield return tuple.Item3;
}
public static IEnumerable<object> ToCollection<T1, T2, T3>(this Tuple<T1, T2, T3> tuple)
{
yield return tuple.Item1;
yield return tuple.Item2;
yield return tuple.Item3;
}
...
}