C#.NET * C++ * JAVASCRIPT * PYTHON * DIVERSES
XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT



C#.NET / Objekt-Orientierte Programmierung mit C#.NET / C#.NET: ValueTuple

C#.NET: ValueTuple

C#.NET: ValueTuple

Deklaration eines ValueTuples


static (string, string, int, string, int, 
   string, int, string, int) GetrechteckInfo()
{
    return ("Rechteck", "Laenge", 3, "Breite", 4, 
            "Flaeche", 12, "Umfang", 14);
}

Auswertung eines ValueTuples


static void ValueTypeDemo()
{
    var x = GetrechteckInfo();
    // Der Zugriffauf einzelne Items erfolgt 
    // über die Benennung des Items
    Console.WriteLine($"{x.Item1}\t{x.Item8}: {x.Item9}");
    // Output
    //Rechteck Umfang: 14
    // Das komplette ValueTuple wird so ausgegeben:
    Console.WriteLine(x);
    // Output:
    //(Rechteck, Laenge, 3, Breite, 4, Flaeche, 12, Umfang, 14)
    // Auch sämtliche Informationen zum Objekt x 
    // lassen sich über die Type-Klasse auslesen.
    Console.WriteLine(x.GetType().FullName);
    // Output: 
    // System.ValueTuple`8[[System.String, 
    // mscorlib, Version=4.0.0.0, Culture=neutral
    // Um alle Items des Tuples in einer Schleife 
    // abzuarbeiten, ist es notwendig, auf 
    // System.Runtime.CompilerServices.ITuple zuzugreifen.
    // Obwohl System.ValueTuple das Interface 
    // System.Runtime.CompilerServices.ITuple impleentiert,
    // ist die Konvertierung nicht möglich.             
    // System.ValueTuple t = (System.ValueTuple)GetrechteckInfo();
    // Es erscheint die Fehlermeldung:
    // Fehler CS0030  Der Typ "(string, string, int, 
    // string, int, string, int, string, int)" 
    // kann nicht in "System.ValueTuple" konvertiert werden.	
    // Notwendig ist daher:
    System.Runtime.CompilerServices.ITuple t = GetrechteckInfo();
    for (int i=0; i<t.Length; i++)
    {
        Console.WriteLine(t[i]);
    }
    //Rechteck
    //Laenge
    //3
    //Breite
    //4
    //Flaeche
    //12
    //Umfang
    //14
    // Alternative:
    foreach(var y in TupleToArrayList(t))
    {
        Console.WriteLine(y);
    }
}

Konvertierung eines ValueTuples in eine ArrayList


public static System.Collections.ArrayList 
    TupleToArrayList(System.Runtime.CompilerServices.ITuple t)
{
    var liste = new System.Collections.ArrayList(t.Length);
    for (int i = 0; i < t.Length; i++)
    {
        liste.Add(t[i]);
    }
    return liste;
}

wg / 4. April 2021



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/Csharp_ValueType.html