Tuple desenrollado en C # similar a Python

En Python podemos desenrollar una tupla con una syntax similar:

a, b = (1, 2) 

¿Hay estructuras similares en C #? O accediendo a elementos como:

 Tuple t = Tuple.Create(1, 2); Console.Write(t.Item1); 

¿La única manera posible?

La desestructuración de tuplas (a veces llamada “explosión”), es decir, la distribución de sus elementos en varias variables, no es compatible directamente con el lenguaje C #.

Podrías escribir tus propios métodos de extensión:

 static void ExplodeInto(this Tuple tuple, out TA a, out TB b) { a = tuple.Item1; b = tuple.Item2; } var tuple = Tuple.Create(1, 2); int a, b; tuple.ExplodeInto(out a, out b); 

El ejemplo anterior es solo para parejas (es decir, tuplas con dos elementos). Necesitaría escribir uno de estos métodos de extensión por Tuple<> tamaño / tipo.

En la próxima versión del lenguaje C #, probablemente podrá declarar variables dentro de una expresión. Esto posiblemente podría permitirle combinar las dos últimas líneas de código arriba en tuple.ExplodeInto(out int a, out int b); .

Corrección: las expresiones de la statement aparentemente se han eliminado de las funciones planificadas para C # 6, o al menos se han restringido; como resultado, lo que sugerí anteriormente ya no funcionaría.