Voglio usare alcune funzionalità di Python come Tuples e Sets in C#. dovrei implementarli? o ci sono già stati implementati? qualcuno potrebbe conoscere una libreria di strutture dati dinamiche per i linguaggi .net?Come simulare tuple e set in C#?
risposta
Per i set, HashSet (una funzionalità .NET 3.5) risolvono il problema abbastanza bene.
una risposta parziale, per le tuple:
- .NET 4.0 fornisce [alcune] supporto per tuples.
- Le versioni precedenti di C# possono utilizzare il tipo anonimo (credo introdotto in .Net 2.0, 3.0 di sicuro, con tutto il materiale LINQ).
Nessuno di questi approcci è conveniente come con Python; l'handicap principale deriva dal fatto che C# è tipizzato staticamente. Tuttavia la classe Tuple C# 4.0 ha metodi statici di tipo factory che rendono più semplice la creazione di tuple (fino a 8 tuple, cioè tuple con 8 membri). Ad esempio uno può avere
var customer1 = Tuple.Create("John", "Smith", 14, 5.33, "202-123-444");
L'utilizzo di tipo anonimo può essere eseguito come segue. Il principale svantaggio di questo approccio è che bisogna nominare esplicitamente gli elementi del "tupla" (anche se questa denominazione può essere implicitamente "proiettata" se i valori utilizzati per l'inizializzazione vengono "proiettati" da un altro oggetto.
customer1 = new Customer { Name = "John", Surname = "Smith", NumberOfVisits = 14, CurrentBalance = 5.33, PhoneNr = "202-123-444" };
@mjv: C# è un linguaggio tipicamente più * staticamente *. Sia C# che Python sono fortemente tipizzati. – quamrana
@quamrana: giustissimo. Ecco cosa intendevo; ora modificato di conseguenza. – mjv
sono stati aggiunti tipi anonimi in C# 3.0/.NET 3.5. .NET 3.0 era solo roba BCL, nessuna modifica alle lingue –
Se si sta lavorando con .NET Framework in precedenza rispetto a quanto già accennato, potrebbe rivelarsi interessante un certo numero di Wintellect Power Collections, ovvero Pair
e Triple
per tuple di 2 e 3 e raccolte come Set
, Bag
e Ordered
di entrambi.
Ovviamente, non c'è nulla che ti impedisca di implementare la versione 4.0 Tuple
da soli.
(A proposito, non c'è niente di particolarmente 'dinamica' su strutture di dati come questi di per sé)
- 1. Differenza tra tuple e set in mdx
- 2. Come convertire tra tuple F # e C#?
- 3. Come posso simulare un unione C++ in C#?
- 4. Disimballaggio tuple annidate in C++
- 5. come simulare l'ereditarietà multipla in C#
- 6. Fai scatter plot dal set di punti in tuple
- 7. C++ Come generare il set di prodotti cartesiani di tuple n-dimensionali
- 8. Come simulare \ hfill con HTML e CSS?
- 9. Conversione tra std :: tuple e boost :: tuple
- 10. come simulare REPEAT() in SQLite
- 11. Tuple e decompressione dell'assegnazione del supporto in C#?
- 12. tuple vettoriale e initializer_list
- 13. simulare tempo di compilazione riflessione in C++
- 14. Come simulare l'esaurimento del filo C#
- 15. Come posso simulare il polimorfismo in stile OO in C?
- 16. Python tuple to C array
- 17. tuple e l'assegnazione stranezza
- 18. Generazione di tuple da tuple
- 19. Tuple (o matrici) come chiavi del dizionario in C#
- 20. set inizializzato array come parametri in C#
- 21. Come controllare se "set" in c
- 22. Utilizzo di c: url in c: set
- 23. Riorganizza tuple di tuple in Python
- 24. Come simulare PreferenceManager in Android?
- 25. Come simulare NSDate in Swift?
- 26. È possibile simulare l'interfaccia Go in C/C++?
- 27. Come simulare il metodo e nel Registro
- 28. Tuple e dizionari contenuti in un elenco
- 29. Come simulare NVL in HQL
- 30. Converti tuple in elenco e ritorno
"... che è proprio come una tupla", anche se un solo 2-tuple. – Thomas
@Thomas Sì, intendevo specificare una tupla di 2 elementi. Modificato e risolto. Grazie. –
keyvaluepair non è mai una tupla. pls edit it .. – nawfal