Ich brauche etwas ähnlich wie List<String, Int32, Int32>
. Die Liste unterstützt nur jeweils einen Typ und das Wörterbuch jeweils nur zwei. Gibt es einen sauberen Weg, etwas wie das oben genannte zu tun (eine mehrdimensionale generische Liste/Sammlung)?Gibt es so etwas wie Liste <String, Int32, Int32> (mehrdimensionale generische Liste)
Antwort
Der beste Weg ist es, einen Behälter für sie also eine Klasse
public class Container
{
public int int1 { get; set; }
public int int2 { get; set; }
public string string1 { get; set; }
}
dann in den Code zu erstellen, wo Sie es
List<Container> myContainer = new List<Container>();
+1, da es kein .Net4-Tupel erfordert und mit einer Klasse trivial implementiert werden kann, aber -1, weil Sie öffentliche Felder in einer Klasse vermeiden sollten. Implementieren Sie als eine Eigenschaft und verwenden Sie einfach '{get; set;} 'stattdessen. –
Sie müssen wahrscheinlich auch Equals und GetHashCode überschreiben –
Typ Container sollte eine unveränderliche Struktur sein, da es nur Werte darstellt. –
In .NET 4 können Sie List<Tuple<String, Int32, Int32>>
verwenden.
Leider bin ich auf .NET 3.5, aber ich werde dies für 4.0 beachten! – Alex
Nun benötigen, können Sie diese bis nicht tun können, C# 3.0, Verwenden Sie Tupel, wenn Sie C# 4.0 wie in anderen Antworten erwähnt verwenden können.
Jedoch in C# 3.0 - erstellen Sie eine Immutable structure
und umhüllen alle Arten von Insancen innerhalb der Struktur und übergeben Sie den Strukturtyp als generischer Typ Argument zu Ihrer Liste.
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));
Wenn Sie neugierig sind, warum unveränderliche Strukturen schaffen - checkout here.
Basierend auf Ihrem Kommentar, es klingt wie Sie brauchen eine Struktur mit zwei ganzen Zahlen in einem Wörterbuch mit einem String-Schlüssel gespeichert.
struct MyStruct
{
int MyFirstInt;
int MySecondInt;
}
...
Dictionary<string, MyStruct> dictionary = ...
Dies setzt voraus, dass die Zeichenfolgen eindeutig sein sollen. –
- 1. VBA - Gibt es so etwas wie Listen?
- 2. Binding eine generische Liste <string> zu einer ComboBox
- 3. Gibt es so etwas wie "Unicode-Sortierung"?
- 4. Konvertieren Liste <Integer> zu Liste <String>
- 5. Linq OrderBy auf generische Liste gibt nicht vollständig alphabetische Liste
- 6. Console.WriteLine und generische Liste
- 7. Etwas Ähnliches wie C# .NET Generische Liste in Java
- 8. Mehrdimensionale Liste (Array) Neuzuweisung Problem
- 9. Eine generische Liste von Generika
- 10. So testen Sie, ob Methodenrückgabetyp Liste <String>
- 11. Wie konvertiert man die Liste <char> in die Liste <string> in C#?
- 12. Gibt es so etwas wie XML 2.0?
- 13. ASP.NET MVC - Html.Action gibt die Liste <string> zurück, wie wird die Liste korrekt angezeigt?
- 14. So speichern Sie eine Liste <string> auf Settings.Default?
- 15. Liste <String> in Java zu Liste in Javascript
- 16. Generische Liste von generischen Objekten
- 17. .NET generische Liste in F # -Liste konvertieren
- 18. Wie RemoveAll wenn generische Liste <T> in Power
- 19. C# dynamische generische Liste
- 20. Wie zu verwenden. Wo in generische Liste
- 21. WPF-Textblockbindung mit Liste <string>
- 22. C# generische Liste merge
- 23. konvertieren EnumerableRowCollection <string> zur Liste <string>
- 24. Gibt es eine saubere Möglichkeit, beim Vergleichen der Liste <String> den Fall zu ignorieren?
- 25. Java-Wörterbuch <String, Liste <Object>>
- 26. convert Liste <string> zur Liste <decimal> mit TryParse C#
- 27. C# - Deserialize eine Liste <String>
- 28. Android Liste speichern <String>
- 29. Wie konvertiert man eine Liste <String> Liste in CSV-String
- 30. zwei generische Liste vergleichen, die Klassenobjekte enthält
Die Duplizierung von Int32 ist interessant. Was versuchst du zu machen? –
Ich muss zwei verschiedene Zahlen semantisch mit einer Zeichenfolge verknüpfen, die dann zum Rendern von Daten in einer Ansicht verwendet wird. – Alex
Ich denke @Alex hat 'Java' Hintergrund wie ich. –