Una tupla è la contropartita di una lista.
mentre l'elenco esercizi 0-N del tipo stesso di articolo, un negozio tuple 1-M di (possibilmente) diversi elementi -typed, dove N è illimitato e M è fissato staticamente/definito.
Ognuno di questi elementi è accessibile in modo fortemente tipizzato con il loro nome (o "indice" come accade per allineato).
Sono quindi simili ad un tipo anonimo (in realtà, questo è più simile a un "record" e non una "tupla", perché i nomi possono essere scelti arbitrariamente):
new { _0 = value0, _1 = value1, /* etc, as needed */ }
Ma la tupla i tipi sono nominativamente digitati (sono supportati da un gruppo di classi diverse, come Action
o Func
) e quindi è possibile specificare esplicitamente un tipo di tupla specifico (ad esempio nelle firme dei metodi), che è qualcosa che un tipo anonimo non può essere usato per.
Mentre direi che l'uso pratico delle tuple in C# è ostacolata dalla mancanza di supporto (ad esempio non si decompone, nessuna applicazione, ecc), sono utilizzati tutto il tempo in lingue come Scala. L'approccio C# è generalmente quello di "creare un nuovo tipo di nome", ma introduce i tipi Tuple
come un altro strumento disponibile.
(Un grosso punto in cui i Tuple sono molto utili nei calcoli intermedi - ma C# ha tipi anonimi, che come si vede con LINQ, svolgono questo ruolo abbastanza bene nella maggior parte dei casi in cui i calcoli vengono eseguiti nello stesso metodo.)
fonte
2012-06-21 21:27:18
Che cosa vuoi dire, "pass in un valore a la tupla e farla ritornare tre valori "? Le tuple non * fanno * qualsiasi cosa tranne i dati del negozio. Chiedere a cosa serve una tupla è come chiedere a cosa serve un POCO. –
Hai mai studiato cos'è una tupla prima di fare questa domanda? Quali esempi sono stati utilizzati? Forse consideri di fare una domanda più diretta, ad es. "E 'questo un buon adattamento per una tupla?" ecc. Non ti segnerò, ma questa non è davvero una buona domanda IMO. –
Nathan