2011-09-30 9 views
7

Duplicar posible:
What's the purpose of the Tuple(T1)/Singleton in .net?Cuál es el punto de Tuple (Of T)

tratando de imitar una tupla como se aplica en .Net 4 (For .Net 3) Me di cuenta hay un Tuple (Of T)? ¡Esto fue una sorpresa!

¿Por qué alguien hacer esto

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

En lugar de esto

return "Data"; 

No es el punto central de una tupla que es un contenedor para los "datos vagamente relacionada que no es bastante coherente para hacer otra clase"? ¿Me estoy perdiendo de algo?

+0

Lo siento, me veía, las tablillas que uno. –

Respuesta

4

Hay un número finito de tuplas en la biblioteca, por lo que para definir una tupla de 8, utiliza el tipo con 7 elementos cuyo argumento 'resto' es un tupla. Ver

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

+1

Esto no responde la pregunta en absoluto. El OP pregunta: "¿Por qué tener una Tupla de un solo artículo?" Esa parece una pregunta razonable para hacer. –

+2

¿Cómo es esta una respuesta a la pregunta? – jason

+1

¿Por qué odias esta respuesta? La página de MSDN enlazada brinda un ejemplo explícito de cuándo se requiere * un * tuple de un elemento, como cuando se proporciona el parámetro TRest para un 8-tuple. – Levi

1

Ésta es una transferencia desde la teoría de conjuntos que podrían no tener mucho uso para un desarrollador de software.

Las tuplas son simplemente listas ordenadas de elementos. Una N-tupla tiene n elementos, y n puede ser uno, que se llama singleton. Probablemente no tengas mucho uso para una 1-tupla en el código, pero supongo que el equipo de C# lo completó.

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

+1

Entonces, ¿todos estamos de acuerdo en que una tupla de un artículo es intrínsecamente inútil? –

+1

Para el desarrollo de software, no puedo pensar en usarlo. ¿Tal vez si estuvieras escribiendo un programa para modelar un conjunto matemático? Deberías enviar un correo electrónico a Eric Lippert con un enlace a esta pregunta, tal vez él proporcione alguna información mañana –

+0

¿Supongo que estás suponiendo la utilidad de una clase de stock BCL en un ámbito diferente al desarrollo de software? –