C# Language
Tuples
Suche…
Tupel erstellen
Tupel werden mit den generischen Typen Tuple<T1>
- Tuple<T1,T2,T3,T4,T5,T6,T7,T8>
. Jeder der Typen stellt ein Tupel dar, das 1 bis 8 Elemente enthält. Elemente können unterschiedlichen Typs sein.
// tuple with 4 elements
var tuple = new Tuple<string, int, bool, MyClass>("foo", 123, true, new MyClass());
Tupel können auch mit statischen Tuple.Create
Methoden erstellt werden. In diesem Fall werden die Typen der Elemente vom C # -Compiler abgeleitet.
// tuple with 4 elements
var tuple = Tuple.Create("foo", 123, true, new MyClass());
Seit C # 7.0 können Tupel einfach mit ValueTuple erstellt werden.
var tuple = ("foo", 123, true, new MyClass());
Elemente können zur leichteren Zerlegung benannt werden.
(int number, bool flag, MyClass instance) tuple = (123, true, new MyClass());
Zugriff auf Tupel-Elemente
Um auf Tupel-Elemente Item1
Item8
Eigenschaften von Item1
- Item8
. Es werden nur die Eigenschaften verfügbar sein, deren Indexnummer kleiner oder gleich der Item3
(dh man kann nicht auf Item3
Eigenschaft Item3
in Tuple<T1,T2>
zugreifen).
var tuple = new Tuple<string, int, bool, MyClass>("foo", 123, true, new MyClass());
var item1 = tuple.Item1; // "foo"
var item2 = tuple.Item2; // 123
var item3 = tuple.Item3; // true
var item4 = tuple.Item4; // new My Class()
Vergleich und Sortierung von Tupeln
Tupel können anhand ihrer Elemente verglichen werden.
Beispielsweise kann eine Aufzählungsliste, deren Elemente vom Typ Tuple
sind, anhand von Vergleichsoperatoren sortiert werden, die für ein bestimmtes Element definiert sind:
List<Tuple<int, string>> list = new List<Tuple<int, string>>();
list.Add(new Tuple<int, string>(2, "foo"));
list.Add(new Tuple<int, string>(1, "bar"));
list.Add(new Tuple<int, string>(3, "qux"));
list.Sort((a, b) => a.Item2.CompareTo(b.Item2)); //sort based on the string element
foreach (var element in list) {
Console.WriteLine(element);
}
// Output:
// (1, bar)
// (2, foo)
// (3, qux)
Oder um die Sortierung umzukehren:
list.Sort((a, b) => b.Item2.CompareTo(a.Item2));
Gibt mehrere Werte aus einer Methode zurück
Tupel können verwendet werden, um mehrere Werte aus einer Methode zurückzugeben, ohne out-Parameter zu verwenden. Im folgenden Beispiel wird AddMultiply
verwendet, um zwei Werte (Summe, Produkt) zurückzugeben.
void Write()
{
var result = AddMultiply(25, 28);
Console.WriteLine(result.Item1);
Console.WriteLine(result.Item2);
}
Tuple<int, int> AddMultiply(int a, int b)
{
return new Tuple<int, int>(a + b, a * b);
}
Ausgabe:
53
700
Jetzt bietet C # 7.0 eine alternative Methode, um mehrere Werte aus Methoden mithilfe von ValueTuple
. Weitere Informationen zur ValueTuple
Struktur .