Ho bisogno di qualcosa di simile a List<String, Int32, Int32>
. Elenco supporta solo un tipo alla volta e Dizionario solo due alla volta. C'è un modo pulito per fare qualcosa come il precedente (una lista/collezione generica multidimensionale)?C'è qualcosa come List <String, Int32, Int32> (elenco generico multidimensionale)
risposta
Il modo migliore è quello di creare un contenitore per esso vale a dire una classe
public class Container
{
public int int1 { get; set; }
public int int2 { get; set; }
public string string1 { get; set; }
}
poi nel codice dove serve
List<Container> myContainer = new List<Container>();
+1 poiché non richiede una tupla .Net4 e può essere implementato banalmente con una classe, ma -1 perché è necessario evitare i campi pubblici in una classe. Implementa come una proprietà e usa semplicemente '{get; impostato;} 'invece. –
Probabilmente sarà necessario sostituire anche Equals e GetHashCode –
tipo Container dovrebbe essere una struttura immutabile poiché rappresenta solo valori. –
In .NET 4 è possibile utilizzare List<Tuple<String, Int32, Int32>>
.
Purtroppo sono su .NET 3.5, ma terrò questo a mente per 4.0! – Alex
Beh, non si può fare questo fino C# 3.0, usa Tuples se puoi usare C# 4.0 come menzionato in altre risposte.
Tuttavia in C# 3.0 - creare un Immutable structure
e avvolgere le insanze di tutti i tipi all'interno della struttura e passare il tipo di struttura come argomento di tipo generico all'elenco.
public struct Container
{
public string String1 { get; private set; }
public int Int1 { get; private set; }
public int Int2 { get; private set; }
public Container(string string1, int int1, int int2)
: this()
{
this.String1 = string1;
this.Int1 = int1;
this.Int2 = int2;
}
}
//Client code
IList<Container> myList = new List<Container>();
myList.Add(new Container("hello world", 10, 12));
Se siete curiosi perché creare le strutture immutabili - checkout here.
In base al tuo commento, sembra che tu abbia bisogno di una struttura con due numeri interi memorizzati in un dizionario con una chiave di stringa.
struct MyStruct
{
int MyFirstInt;
int MySecondInt;
}
...
Dictionary<string, MyStruct> dictionary = ...
Ciò presuppone che le stringhe siano intese come uniche. –
- 1. Converti StringCollection to List <String>
- 2. Come eseguire il cast List <Map<?, ?>> in List <Map <String, String >>?
- 3. Come inizializzare l'oggetto List <String> in Java?
- 4. ritorno sconosciuto Elenco generico <T>
- 5. C# ottenere le chiavi e valori da List <KeyValuePair <string, string>
- 6. Elenco Linq <string> unione
- 7. come utilizzare esistere in List <string> in C#
- 8. Elenco <string> Evento InotifyPropertyChanged
- 9. C# - deserializzare un elenco <String>
- 10. Quando restituire Iterable <String> anziché List, Set, Collection?
- 11. Come cercare una stringa in List <tuple <string, string >> in C#
- 12. Come posso memorizzare HashMap <String, ArrayList <String>> all'interno di un elenco?
- 13. Come ignorare la sensibilità caso in List <string>
- 14. Elenco rilegature <string> a ComboBox
- 15. deserialize stringa vuota a un elenco <string>
- 16. Elenco <string> oggetto IndexOf restituisce -1. Come?
- 17. Come fare un elenco generico uguale un altro elenco generico
- 18. Come deserializzare in un elenco <String> utilizzando XmlSerializer
- 19. è-operatore elenco generico
- 20. Come ordinare un elenco di coppie <String, Integer>?
- 21. Convertire 'ArrayList' in 'Elenco <string>' (o 'Elenco <T>') utilizzando LINQ
- 22. WPF: Collega DataGrid a Elenco <String>
- 23. stringa di sostituire con un elenco <string>
- 24. Elenco prestazioni SqlDataReader <string[]> o Elenco <object[]>
- 25. Override. NET Elenco generico <MyType> .Contains (MyTypeInstance)?
- 26. Convertire un enum in elenco <string>
- 27. Elenco generico di oggetti generici
- 28. Come inizializzare un elenco di stringhe C# (Elenco <string>) con molti valori stringa
- 29. utilizzando LINQ in C# per convertire un elenco <string> in un elenco <char>
- 30. elenco multidimensionale python .. come prendere una dimensione?
La duplicazione di Int32 è interessante. Cosa stai cercando di fare? –
Devo associare semanticamente due numeri diversi con una stringa, che verrà quindi utilizzata per il rendering dei dati in una vista. – Alex
Penso che @Alex abbia lo sfondo 'java' come me. –