Tuple<T1,T2,T3> Classe

Definizione

Rappresenta una tupla a 3 o tre.

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

Parametri di tipo

T1

Tipo del primo componente della tupla.

T2

Tipo del secondo componente della tupla.

T3

Tipo del terzo componente della tupla.

Ereditarietà
Tuple<T1,T2,T3>
Attributi
Implementazioni

Commenti

Una tupla è una struttura di dati con un numero e una sequenza di valori specifici. La Tuple<T1,T2,T3> classe rappresenta una tupla a 3 o triple, ovvero una tupla con tre componenti.

È possibile creare un'istanza di un Tuple<T1,T2,T3> oggetto chiamando il Tuple<T1,T2,T3> costruttore o il metodo statico Tuple.Create<T1,T2,T3>(T1, T2, T3) . È possibile recuperare i valori dei componenti della tupla usando le proprietà dell'istanza , Item1e Item2 di sola Item3lettura.

Le tuple vengono comunemente usate in quattro modi diversi:

  • Per rappresentare un singolo set di dati. Ad esempio, una tupla può rappresentare un record di database e i relativi componenti possono rappresentare singoli campi del record.

  • Per semplificare l'accesso e la manipolazione di un set di dati. Nell'esempio seguente viene definita una matrice di Tuple<T1,T2,T3> oggetti che contengono i nomi degli studenti, i punteggi medi dei test e il numero di test eseguiti. La matrice viene passata al ComputeStatistics metodo , che calcola la media e la deviazione standard dei punteggi di test.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          Tuple<string, double, int>[] scores = 
                        { Tuple.Create("Jack", 78.8, 8),
                          Tuple.Create("Abbey", 92.1, 9), 
                          Tuple.Create("Dave", 88.3, 9),
                          Tuple.Create("Sam", 91.7, 8), 
                          Tuple.Create("Ed", 71.2, 5),
                          Tuple.Create("Penelope", 82.9, 8),
                          Tuple.Create("Linda", 99.0, 9),
                          Tuple.Create("Judith", 84.3, 9) };
          var result = ComputeStatistics(scores);
          Console.WriteLine("Mean score: {0:N2} (SD={1:N2}) (n={2})", 
                            result.Item2, result.Item3, result.Item1);
       }
    
       private static Tuple<int, double, double> ComputeStatistics(Tuple<string, double, int>[] scores) 
       {
          int n = 0;
          double sum = 0;
    
          // Compute the mean.
          foreach (var score in scores)
          {
             n += score.Item3;
             sum += score.Item2 * score.Item3;
          }
          double mean = sum / n;
          
          // Compute the standard deviation.
          double ss = 0;
          foreach (var score in scores)
          {
             ss = Math.Pow(score.Item2 - mean, 2);
          }
          double sd = Math.Sqrt(ss/scores.Length);
          return Tuple.Create(scores.Length, mean, sd);
       }
    }
    // The example displays the following output:
    //       Mean score: 87.02 (SD=0.96) (n=8)
    
    open System
    
    let computeStatistics (scores: Tuple<string, double, int>[]) = 
        let mutable n = 0
        let mutable sum = 0.
    
        // Compute the mean.
        for score in scores do
            n <- n + score.Item3
            sum <- sum + score.Item2 * double score.Item3
        let mean = sum / double n
        
        // Compute the standard deviation.
        let mutable ss = 0.
        for score in scores do
            ss <- (score.Item2 - mean) ** 2.
        let sd = sqrt (ss / double scores.Length)
        Tuple.Create(scores.Length, mean, sd)
    
    let scores = 
        [| Tuple.Create("Jack", 78.8, 8)
           Tuple.Create("Abbey", 92.1, 9) 
           Tuple.Create("Dave", 88.3, 9)
           Tuple.Create("Sam", 91.7, 8) 
           Tuple.Create("Ed", 71.2, 5)
           Tuple.Create("Penelope", 82.9, 8)
           Tuple.Create("Linda", 99.0, 9)
           Tuple.Create("Judith", 84.3, 9) |]
    let result = computeStatistics scores
    printfn $"Mean score: {result.Item2:N2} (SD={result.Item3:N2}) (n={result.Item1})"
    // The example displays the following output:
    //       Mean score: 87.02 (SD=0.96) (n=8)
    
    Module Example
       Public Sub Main()
          Dim scores() = 
                          { Tuple.Create("Jack", 78.8, 8),
                            Tuple.Create("Abbey", 92.1, 9), 
                            Tuple.Create("Dave", 88.3, 9),
                            Tuple.Create("Sam", 91.7, 8), 
                            Tuple.Create("Ed", 71.2, 5),
                            Tuple.Create("Penelope", 82.9, 8),
                            Tuple.Create("Linda", 99.0, 9),
                            Tuple.Create("Judith", 84.3, 9) }
          Dim result = ComputeStatistics(scores)
          Console.WriteLine("Mean score: {0:N2} (SD={1:N2}) (n={2})", 
                            result.Item2, result.Item3, result.Item1)
       End Sub
       
       Private Function ComputeStatistics(scores() As Tuple(Of String, Double, Integer)) _ 
                                    As Tuple(Of Integer, Double, Double)
          Dim n As Integer = 0      
          Dim sum As Double = 0
          
          ' Compute the mean.
          For Each score In scores
             n+= score.Item3 
             sum += score.Item2 * score.Item3
          Next     
          Dim mean As Double = sum / n
    
          ' Compute the standard deviation.
          Dim ss As Double = 0
          For Each score In scores
             ss = Math.Pow(score.Item2 - mean, 2)
          Next
          Dim sd As Double = Math.Sqrt(ss/scores.Length)
          Return Tuple.Create(scores.Length, mean, sd)
       End Function
    End Module
    ' The example displays the following output:
    '       Mean score: 87.02 (SD=0.96) (n=8)
    
  • Per restituire più valori da un metodo senza l'uso di out parametri (in C#) o ByRef parametri (in Visual Basic). Ad esempio, l'esempio precedente restituisce le statistiche del punteggio di test di riepilogo in un Tuple<T1,T2,T3> oggetto .

  • Per passare più valori a un metodo tramite un singolo parametro. Ad esempio, il Thread.Start(Object) metodo ha un singolo parametro che consente di fornire un valore al metodo eseguito dal thread all'avvio. Se si specifica un Tuple<T1,T2,T3> oggetto come argomento del metodo, è possibile specificare la routine di avvio del thread con tre elementi di dati.

Costruttori

Nome Descrizione
Tuple<T1,T2,T3>(T1, T2, T3)

Inizializza una nuova istanza della classe Tuple<T1,T2,T3>.

Proprietà

Nome Descrizione
Item1

Ottiene il valore del primo componente dell'oggetto corrente Tuple<T1,T2,T3> .

Item2

Ottiene il valore del secondo componente dell'oggetto corrente Tuple<T1,T2,T3> .

Item3

Ottiene il valore del terzo componente dell'oggetto corrente Tuple<T1,T2,T3> .

Metodi

Nome Descrizione
Equals(Object)

Restituisce un valore che indica se l'oggetto corrente Tuple<T1,T2,T3> è uguale a un oggetto specificato.

GetHashCode()

Restituisce il codice hash per l'oggetto corrente Tuple<T1,T2,T3> .

GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta il valore di questa Tuple<T1,T2,T3> istanza.

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IComparable.CompareTo(Object)

Confronta l'oggetto corrente Tuple<T1,T2,T3> con un oggetto specificato e restituisce un numero intero che indica se l'oggetto corrente è precedente, successivo o nella stessa posizione dell'oggetto specificato nell'ordinamento.

IStructuralComparable.CompareTo(Object, IComparer)

Confronta l'oggetto corrente Tuple<T1,T2,T3> con un oggetto specificato utilizzando un operatore di confronto specificato e restituisce un intero che indica se l'oggetto corrente è precedente, successivo o nella stessa posizione dell'oggetto specificato nell'ordinamento.

IStructuralEquatable.Equals(Object, IEqualityComparer)

Restituisce un valore che indica se l'oggetto corrente Tuple<T1,T2,T3> è uguale a un oggetto specificato in base a un metodo di confronto specificato.

IStructuralEquatable.GetHashCode(IEqualityComparer)

Calcola il codice hash per l'oggetto corrente Tuple<T1,T2,T3> utilizzando un metodo di calcolo specificato.

ITuple.Item[Int32]

Ottiene il valore dell'elemento specificato Tuple .

ITuple.Length

Ottiene il numero di elementi nell'oggetto Tuple.

Metodi di estensione

Nome Descrizione
Deconstruct<T1,T2,T3>(Tuple<T1,T2,T3>, T1, T2, T3)

Decostruisce una tupla con 3 elementi in variabili separate.

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

Converte un'istanza della Tuple classe in un'istanza della ValueTuple struttura .

Si applica a

Vedi anche