que - ¿Cómo simular tuplas y conjuntos en C#?
programa que haga las operaciones de conjuntos en java (3)
.NET 3.5 tiene HashSet .
.NET 4.0 tendrá una clase Tuple . Como se señaló en el artículo, la versión anterior de .NET contiene KeyValuePair <TKey, TValue> que es similar a un Tuple <T1, T2>, con la principal diferencia de que KeyValuePair requiere que TKey sea único.
Quiero usar algunas funciones de python como Tuplas y Conjuntos en c #. ¿Debo implementarlos? ¿O ya están implementados? ¿Alguien puede conocer una biblioteca de estructuras de datos dinámicos para lenguajes .net?
Para los Sets, HashSets (una característica de .NET 3.5) hace el truco bastante bien.
Una respuesta parcial, para tuplas:
- .NET 4.0 proporciona [algunos] soporte para tuples .
- Las versiones anteriores de C # pueden usar el tipo anónimo (creo que se introdujo en .Net 2.0, 3.0 con toda seguridad, con todo lo relacionado con LINQ).
Ninguno de estos enfoques es tan conveniente como con Python; La principal desventaja viene del hecho de que C # está tipificado estáticamente. Sin embargo, la clase C # 4.0 Tuple tiene métodos estáticos de fábrica que facilitan la creación de tuplas (hasta 8-tuplas, es decir, tuplas con 8 miembros). Por ejemplo uno puede tener
var customer1 = Tuple.Create("John", "Smith", 14, 5.33, "202-123-444");
El uso del tipo anónimo se puede hacer de la siguiente manera. El principal inconveniente de este enfoque es que es necesario nombrar explícitamente los elementos de la "tupla" (aunque esta denominación puede ser "proyectada" implícitamente si los valores utilizados para la inicialización se "proyectan" desde otro objeto.
customer1 = new Customer { Name = "John", Surname = "Smith", NumberOfVisits = 14, CurrentBalance = 5.33, PhoneNr = "202-123-444" };
Si está trabajando con un .NET Framework anterior a lo que ya se mencionó, Wintellect Power Collections puede resultar de interés: tiene Pair
y Triple
para 2 y 3 tuplas, y colecciones como Set
, Bag
y Sabores Ordered
de ambos .
Por supuesto, no hay nada que le Tuple
implementar Tuple
4.0 por su cuenta.
(Por cierto, no hay nada particularmente ''dinámico'' sobre estructuras de datos como éstas en sí mismas)