Tuple<T1,T2,T3,T4> Třída

Definice

Představuje čtyřřazenou kolekci členů nebo čtyřnásobnou kolekci členů.

generic <typename T1, typename T2, typename T3, typename T4>
public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable
generic <typename T1, typename T2, typename T3, typename T4>
public ref class Tuple : IComparable, System::Collections::IStructuralComparable, System::Collections::IStructuralEquatable, System::Runtime::CompilerServices::ITuple
public class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
public class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable, System.Runtime.CompilerServices.ITuple
[System.Serializable]
public class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
type Tuple<'T1, 'T2, 'T3, 'T4> = class
    interface IStructuralComparable
    interface IStructuralEquatable
    interface IComparable
type Tuple<'T1, 'T2, 'T3, 'T4> = class
    interface IStructuralComparable
    interface IStructuralEquatable
    interface IComparable
    interface ITuple
[<System.Serializable>]
type Tuple<'T1, 'T2, 'T3, 'T4> = class
    interface IStructuralEquatable
    interface IStructuralComparable
    interface IComparable
[<System.Serializable>]
type Tuple<'T1, 'T2, 'T3, 'T4> = class
    interface IStructuralEquatable
    interface IStructuralComparable
    interface IComparable
    interface ITuple
Public Class Tuple(Of T1, T2, T3, T4)
Implements IComparable, IStructuralComparable, IStructuralEquatable
Public Class Tuple(Of T1, T2, T3, T4)
Implements IComparable, IStructuralComparable, IStructuralEquatable, ITuple

Parametry typu

T1

Typ první komponenty řazené kolekce členů.

T2

Typ druhé komponenty řazené kolekce členů.

T3

Typ třetí komponenty řazené kolekce členů.

T4

Typ čtvrté komponenty řazené kolekce členů.

Dědičnost
Tuple<T1,T2,T3,T4>
Atributy
Implementuje

Poznámky

Řazená kolekce členů je datová struktura, která má určitý počet a posloupnost hodnot. Třída Tuple<T1,T2,T3,T4> představuje 4-řazenou kolekci členů, nebo čtyřnásobnou kolekci členů, která má čtyři součásti.

Objekt lze vytvořit Tuple<T1,T2,T3,T4> instanci voláním Tuple<T1,T2,T3,T4> konstruktoru nebo statické Tuple.Create<T1,T2,T3,T4>(T1, T2, T3, T4) metody. Hodnotu součástí řazené kolekce členů můžete načíst pomocí vlastností jen Item1pro čtení , Item2Item3, a Item4 instance.

Řazené kolekce členů se běžně používají čtyřmi různými způsoby:

  • Představuje jednu sadu dat. Například řazená kolekce členů může představovat záznam databáze a její komponenty mohou představovat jednotlivá pole záznamu.

  • Pro zajištění snadného přístupu k datové sadě a manipulaci s nimi. Následující příklad definuje pole Tuple<T1,T2,T3,T4> objektů, které obsahují názvy baseballových nadhazovačů, počet inningů, které rozhodili, a počet vytvořených běhů (spuštění, která získala skóre bez chyb pole), a hity, které vzdali. Pole se předá ComputeStatistics metodě, která vypočítá průměrný počet spuštění každého nadhazujícího (průměrný počet spuštění zadaných v devíti inningové hře) a průměrný počet hitů zadaných na inning. Metoda také používá tyto dva průměry k výpočtu hypotetického průměru účinnosti.

    using System;
    using System.Collections.Generic;
    
    public class Example
    {
       public static void Main()
       {
          Tuple<string, decimal, int, int>[] pitchers  =  
               { Tuple.Create("McHale, Joe", 240.1m, 221, 96),
                 Tuple.Create("Paul, Dave", 233.1m, 231, 84), 
                 Tuple.Create("Williams, Mike", 193.2m, 183, 86),
                 Tuple.Create("Blair, Jack", 168.1m, 146, 65), 
                 Tuple.Create("Henry, Walt", 140.1m, 96, 30),
                 Tuple.Create("Lee, Adam", 137.2m, 109, 45),
                 Tuple.Create("Rohr, Don", 101.0m, 110, 42) };
          Tuple<string, double, double, double>[] results= ComputeStatistics(pitchers);
    
          // Display the results.
          Console.WriteLine("{0,-20} {1,9} {2,11} {3,15}\n", 
                            "Pitcher", "ERA", "Hits/Inn.", "Effectiveness");
          foreach (var result in results)
             Console.WriteLine("{0,-20} {1,9:F2} {2,11:F2} {3,15:F2}",  
                            result.Item1, result.Item2, result.Item3, result.Item4);
       }
    
       private static Tuple<string, double, double, double>[] ComputeStatistics(Tuple<string, decimal, int, int>[] pitchers)
       {    
          var list = new List<Tuple<string, double, double, double>>();
          Tuple<string, double, double, double> result;
    
          foreach (var pitcher in pitchers)
          {
             // Decimal portion of innings pitched represents 1/3 of an inning
             double innings = (double) Math.Truncate(pitcher.Item2);
             innings = innings + (((double)pitcher.Item2 - innings) * .33);
             
             double ERA = pitcher.Item4/innings * 9;
             double hitsPerInning = pitcher.Item3/innings;
             double EI = (ERA * 2 + hitsPerInning * 9)/3;
             result = new Tuple<string, double, double, double>
                               (pitcher.Item1, ERA, hitsPerInning, EI);
             list.Add(result);
          }
          return list.ToArray();
       }
    }
    // The example displays the following output;
    //       Pitcher                    ERA   Hits/Inn.   Effectiveness
    //       
    //       McHale, Joe               3.60        0.92            5.16
    //       Paul, Dave                3.24        0.99            5.14
    //       Williams, Mike            4.01        0.95            5.52
    //       Blair, Jack               3.48        0.87            4.93
    //       Henry, Walt               1.93        0.69            3.34
    //       Lee, Adam                 2.95        0.80            4.36
    //       Rohr, Don                 3.74        1.09            5.76
    
    open System
    
    let computeStatistics (pitchers: Tuple<string, decimal, int, int>[]) =
        [| for pitcher in pitchers do
            // Decimal portion of innings pitched represents 1/3 of an inning
            let innings =  truncate (double pitcher.Item2) |> double
            let innings = innings + (double pitcher.Item2 - innings) * 0.33
            
            let ERA = double pitcher.Item4 / innings * 9.
            let hitsPerInning = double pitcher.Item3 / innings
            let EI = (ERA * 2. + hitsPerInning * 9.) / 3.
            Tuple<string, double, double, double>(pitcher.Item1, ERA, hitsPerInning, EI)|]
    
    let pitchers  =  
        [| Tuple.Create("McHale, Joe", 240.1m, 221, 96)
           Tuple.Create("Paul, Dave", 233.1m, 231, 84)
           Tuple.Create("Williams, Mike", 193.2m, 183, 86)
           Tuple.Create("Blair, Jack", 168.1m, 146, 65) 
           Tuple.Create("Henry, Walt", 140.1m, 96, 30)
           Tuple.Create("Lee, Adam", 137.2m, 109, 45)
           Tuple.Create("Rohr, Don", 101.0m, 110, 42) |]
    
    let results = computeStatistics pitchers
    
    // Display the results.
    printfn "%-20s %9s %11s %15s\n" "Pitcher" "ERA" "Hits/Inn." "Effectiveness"
    for result in results do
        printfn $"{result.Item1,-20} {result.Item2,9:F2} {result.Item3,11:F2} {result.Item4,15:F2}"
    
    // The example displays the following output
    //       Pitcher                    ERA   Hits/Inn.   Effectiveness
    //       
    //       McHale, Joe               3.60        0.92            5.16
    //       Paul, Dave                3.24        0.99            5.14
    //       Williams, Mike            4.01        0.95            5.52
    //       Blair, Jack               3.48        0.87            4.93
    //       Henry, Walt               1.93        0.69            3.34
    //       Lee, Adam                 2.95        0.80            4.36
    //       Rohr, Don                 3.74        1.09            5.76
    
    Imports System.Collections.Generic
    
    Module Example
       Public Sub Main()
          Dim pitchers() =  
                   { Tuple.Create("McHale, Joe", 240.1d, 221, 96),
                     Tuple.Create("Paul, Dave", 233.1d, 231, 84), 
                     Tuple.Create("Williams, Mike", 193.2d, 183, 86),
                     Tuple.Create("Blair, Jack", 168.1d, 146, 65), 
                     Tuple.Create("Henry, Walt", 140.1d, 96, 30),
                     Tuple.Create("Lee, Adam", 137.2d, 109, 45),
                     Tuple.Create("Rohr, Don", 101.0d, 110, 42) }
          Dim results() = ComputeStatistics(pitchers)
    
          ' Display the results.
          Console.WriteLine("{0,-20} {1,9} {2,11} {3,15}", "Pitcher", "ERA", "Hits/Inn.", "Effectiveness")
          Console.WriteLine()
          For Each result In results
             Console.WriteLine("{0,-20} {1,9:F2} {2,11:F2} {3,15:F2}",  
                            result.Item1, result.Item2, result.Item3, result.Item4)
          Next
       End Sub
       
       Private Function ComputeStatistics(pitchers() As Tuple(Of String, Decimal, Integer, Integer)) _ 
                                    As Tuple(Of String, Double, Double, Double)()
          Dim list As New List(Of Tuple(Of String, Double, Double, Double))
          Dim result As Tuple(Of String, Double, Double, Double)
    
          For Each pitcher As Tuple(Of String, Decimal, Integer, Integer) In pitchers
             ' Decimal portion of innings pitched represents 1/3 of an inning
             Dim innings As Double = CDbl(Math.Truncate(pitcher.Item2))
             innings = innings + ((pitcher.Item2 - innings) * .33)
             
             Dim ERA As Double = pitcher.Item4/innings * 9
             Dim hitsPerInning As Double = pitcher.Item3/innings
             Dim EI As Double = (ERA * 2 + hitsPerInning * 9)/3
             result = New Tuple(Of String, Double, Double, Double) _
                               (pitcher.Item1, ERA, hitsPerInning, EI)
             list.Add(result) 
          Next
          Return list.ToArray()
       End Function
    End Module
    ' The example displays the following output:
    '       Pitcher                    ERA   Hits/Inn.   Effectiveness
    '       
    '       McHale, Joe               3.60        0.92            5.16
    '       Paul, Dave                3.24        0.99            5.14
    '       Williams, Mike            4.01        0.95            5.52
    '       Blair, Jack               3.48        0.87            4.93
    '       Henry, Walt               1.93        0.69            3.34
    '       Lee, Adam                 2.95        0.80            4.36
    '       Rohr, Don                 3.74        1.09            5.76
    
  • Chcete-li vrátit více hodnot z metody bez použití out parametrů (v jazyce C#) nebo ByRef parametrů (v jazyce Visual Basic). Předchozí příklad například vrátí vypočítanou statistiku spolu s názvem nadhazovače v poli Tuple<T1,T2,T3,T4> objektů.

  • Předání více hodnot metodě prostřednictvím jednoho parametru. Například Thread.Start(Object) metoda má jeden parametr, který umožňuje zadat jednu hodnotu metodě, kterou vlákno spouští při spuštění. Pokud jako argument metody zadáte Tuple<T1,T2,T3,T4> objekt, můžete zadat spouštěcí rutinu vlákna se čtyřmi položkami dat.

Konstruktory

Name Description
Tuple<T1,T2,T3,T4>(T1, T2, T3, T4)

Inicializuje novou instanci Tuple<T1,T2,T3,T4> třídy.

Vlastnosti

Name Description
Item1

Získá hodnotu první komponenty aktuálního Tuple<T1,T2,T3,T4> objektu.

Item2

Získá hodnotu druhé komponenty aktuálního Tuple<T1,T2,T3,T4> objektu.

Item3

Získá hodnotu třetí komponenty aktuálního Tuple<T1,T2,T3,T4> objektu.

Item4

Získá hodnotu čtvrté komponenty aktuálního Tuple<T1,T2,T3,T4> objektu.

Metody

Name Description
Equals(Object)

Vrátí hodnotu, která určuje, zda je aktuální Tuple<T1,T2,T3,T4> objekt roven zadanému objektu.

GetHashCode()

Vrátí kód hash pro aktuální Tuple<T1,T2,T3,T4> objekt.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje hodnotu této Tuple<T1,T2,T3,T4> instance.

Explicitní implementace rozhraní

Name Description
IComparable.CompareTo(Object)

Porovná aktuální Tuple<T1,T2,T3,T4> objekt se zadaným objektem a vrátí celé číslo, které určuje, zda je aktuální objekt před, za nebo ve stejné pozici jako zadaný objekt v pořadí řazení.

IStructuralComparable.CompareTo(Object, IComparer)

Porovná aktuální Tuple<T1,T2,T3,T4> objekt se zadaným objektem pomocí zadaného porovnávače a vrátí celé číslo, které určuje, zda je aktuální objekt před, za nebo ve stejné pozici jako zadaný objekt v pořadí řazení.

IStructuralEquatable.Equals(Object, IEqualityComparer)

Vrátí hodnotu, která určuje, zda je aktuální Tuple<T1,T2,T3,T4> objekt roven zadanému objektu na základě zadané metody porovnání.

IStructuralEquatable.GetHashCode(IEqualityComparer)

Vypočítá kód hash pro aktuální Tuple<T1,T2,T3,T4> objekt pomocí zadané výpočetní metody.

ITuple.Item[Int32]

Získá hodnotu zadaného Tuple prvku.

ITuple.Length

Získá počet prvků v .Tuple

Metody rozšíření

Name Description
Deconstruct<T1,T2,T3,T4>(Tuple<T1,T2,T3,T4>, T1, T2, T3, T4)

Dekonstruuje řazenou kolekci členů se 4 prvky do samostatných proměnných.

ToValueTuple<T1,T2,T3,T4>(Tuple<T1,T2,T3,T4>)

Převede instanci Tuple třídy na instanci ValueTuple struktury.

Platí pro

Viz také