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());
7,0

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 .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow