2011-09-30 7 views
7

Eventuali duplicati:
What's the purpose of the Tuple(T1)/Singleton in .net?cosa è il punto di tupla (Of T)

Cercando di imitare una tupla come attuata in NET 4 (per NET 3) I appena realizzato c'è una tupla (di T)? Questo è stato abbastanza sorprendente!

Perché qualcuno dovrebbe fare questo

Tuple<string> result = new Tuple<string>("Data"); 

Invece di questo

return "Data"; 

Non è il punto centrale di una tupla che è un contenitore per "i dati vagamente correlato che non è abbastanza coesa per fare un'altra classe "? Mi sto perdendo qualcosa?

+0

Mi dispiace, ho guardato, ha mancato quello. –

risposta

4

Ci sono un numero finito di tuple-arities nella libreria, quindi per definire una tupla di otto, si usa il tipo con 7 elementi il ​​cui argomento 'resto' è una tupla singola. Vedere

http://msdn.microsoft.com/en-us/library/dd383325.aspx

+1

Questo non risponde affatto alla domanda. L'OP chiede: "Perché una tupla di un solo oggetto?" Sembra una domanda ragionevole da porre. –

+2

Come è questa una risposta alla domanda? – jason

+1

Perché l'odio per questa risposta? La pagina MSDN collegata fornisce un esempio esplicito di quando una tupla a elemento singolo è * richiesta *, come quando si fornisce il parametro TRest per una tupla da 8. – Levi

1

Si tratta di un riporto dalla teoria degli insiemi che potrebbero non avere molto uso per uno sviluppatore di software.

Le tuple sono semplicemente elenchi ordinati di elementi. Una N-tupla ha n elementi, e n può essere uno, che è chiamato singleton. Probabilmente non avrai molto a che fare con una 1-tupla in codice, ma suppongo che la squadra di C# la metta lì per completezza.

http://en.wikipedia.org/wiki/Tuple#Etymology

+1

Quindi siamo tutti d'accordo sul fatto che una tupla di un oggetto è intrinsecamente inutile? –

+1

Per lo sviluppo del software, non riesco a pensare a un uso per questo. Forse se stavi scrivendo un programma per modellare un set matematico ??? Dovresti inviare a Eric Lippert un link a questa domanda, forse fornirà qualche input domani –

+0

Quindi, suppongo, stai ipotizzando l'utilità di una classe BCL stock in un regno diverso dallo sviluppo software? –