Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe Tuple<T1, T2>

 

Data di pubblicazione: novembre 2016

Rappresenta una tupla con 2 elementi, ovvero una coppia.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.Tuple<T1, T2>

[SerializableAttribute]
public class Tuple<T1, T2> : IStructuralEquatable, IStructuralComparable, 
	IComparable

Parametri tipo

T1

Tipo del primo componente della tupla.

T2

Tipo del secondo componente della tupla.

NomeDescrizione
System_CAPS_pubmethodTuple<T1, T2>(T1, T2)

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

NomeDescrizione
System_CAPS_pubpropertyItem1

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

System_CAPS_pubpropertyItem2

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

NomeDescrizione
System_CAPS_pubmethodEquals(Object)

Restituisce un valore che indica se l'oggetto corrente Tuple<T1, T2> oggetto è uguale all'oggetto specificato.(Esegue l'override di Object.Equals(Object).)

System_CAPS_protmethodFinalize()

Consente a un oggetto di effettuare un tentativo di liberare risorse ed eseguire altre operazioni di pulizia prima che venga recuperato da Garbage Collection.(Ereditato da Object.)

System_CAPS_pubmethodGetHashCode()

Restituisce il codice hash per l'oggetto Tuple<T1, T2> corrente.(Esegue l'override di Object.GetHashCode().)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.(Ereditato da Object.)

System_CAPS_pubmethodToString()

Restituisce una stringa che rappresenta il valore di questa istanza di Tuple<T1, T2>.(Esegue l'override di Object.ToString().)

NomeDescrizione
System_CAPS_pubinterfaceSystem_CAPS_privmethodIStructuralComparable.CompareTo(Object, IComparer)

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

System_CAPS_pubinterfaceSystem_CAPS_privmethodIStructuralEquatable.Equals(Object, IEqualityComparer)

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

System_CAPS_pubinterfaceSystem_CAPS_privmethodIStructuralEquatable.GetHashCode(IEqualityComparer)

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

System_CAPS_pubinterfaceSystem_CAPS_privmethodIComparable.CompareTo(Object)

Confronta l'oggetto Tuple<T1, T2> corrente con un oggetto specificato e restituisce un intero che indica se l'oggetto corrente precede, segue o si trova nella stessa posizione dell'oggetto specificato nell'ordinamento.

Una tupla è una struttura di dati con un numero specifico e la sequenza di valori. La Tuple<T1, T2> classe rappresenta una tupla con 2 elementi, ovvero una coppia, ovvero una tupla che include due componenti. Una tupla con 2 elementi è simile a un KeyValuePair<TKey, TValue> struttura.

È possibile creare un'istanza di un Tuple<T1, T2> oggetto chiamando il Tuple<T1, T2> costruttore o statico Tuple.Create<T1, T2>(T1, T2) (metodo). È possibile recuperare i valori dei componenti della tupla utilizzando la proprietà di sola lettura Item1 e Item2 delle proprietà dell'istanza.

Le tuple sono comunemente utilizzate in quattro modi diversi:

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

  • Per fornire facile accesso e la manipolazione di un set di dati. L'esempio seguente definisce una matrice di Tuple<T1, T2> gli oggetti che contengono i nomi degli studenti e i relativi punteggi. Scorre quindi la matrice per calcolare il punteggio medio del test.

    using System;
    
    public class Example
    {
       public static void Main()
       {
          Tuple<string, Nullable<int>>[] scores = 
                        { new Tuple<string, Nullable<int>>("Jack", 78),
                          new Tuple<string, Nullable<int>>("Abbey", 92), 
                          new Tuple<string, Nullable<int>>("Dave", 88),
                          new Tuple<string, Nullable<int>>("Sam", 91), 
                          new Tuple<string, Nullable<int>>("Ed", null),
                          new Tuple<string, Nullable<int>>("Penelope", 82),
                          new Tuple<string, Nullable<int>>("Linda", 99),
                          new Tuple<string, Nullable<int>>("Judith", 84) };
          int number;
          double mean = ComputeMean(scores, out number);
          Console.WriteLine("Average test score: {0:N2} (n={1})", mean, number);
       }
    
       private static double ComputeMean(Tuple<string, Nullable<int>>[] scores, out int n) 
       {
          n = 0;      
          int sum = 0;
          foreach (var score in scores)
          {
             if (score.Item2.HasValue)
             { 
                n += 1;
                sum += score.Item2.Value;
             }
          }     
          if (n > 0)
             return sum / (double) n;
          else
             return 0;
       }
    }
    // The example displays the following output:
    //       Average test score: 88 (n=7)
    
  • Per restituire più valori da un metodo senza l'utilizzo di out parametri (c#) o ByRef parametri (in Visual Basic). Ad esempio, l'esempio seguente usa un Tuple<T1, T2> per restituire il quoziente e resto risultanti dalla divisione di interi.

    using System;
    
    public class Class1
    {
       public static void Main()
       {
          int dividend, divisor;
          Tuple<int, int> result;
    
          dividend = 136945; divisor = 178;
          result = IntegerDivide(dividend, divisor);
          if (result != null)
             Console.WriteLine(@"{0} \ {1} = {2}, remainder {3}", 
                               dividend, divisor, result.Item1, result.Item2);
          else
             Console.WriteLine(@"{0} \ {1} = <Error>", dividend, divisor);
    
          dividend = Int32.MaxValue; divisor = -2073;
          result = IntegerDivide(dividend, divisor);
          if (result != null)
             Console.WriteLine(@"{0} \ {1} = {2}, remainder {3}", 
                               dividend, divisor, result.Item1, result.Item2);
          else
             Console.WriteLine(@"{0} \ {1} = <Error>", dividend, divisor);
       }
    
       private static Tuple<int, int> IntegerDivide(int dividend, int divisor)
       {
          try {
             int remainder;
             int quotient = Math.DivRem(dividend, divisor, out remainder);
             return new Tuple<int, int>(quotient, remainder);
          }   
          catch (DivideByZeroException) {
             return null;
          }      
       }
    }
    // The example displays the following output:
    //       136945 \ 178 = 769, remainder 63
    //       2147483647 \ -2073 = -1035930, remainder 757
    
  • Per passare più valori a un metodo tramite un singolo parametro. Ad esempio, il Thread.Start(Object) dispone di un singolo parametro che consente di fornire un valore al metodo eseguito dal thread all'avvio. Se si fornisce un Tuple<T1, T2> dell'oggetto come argomento del metodo, è possibile fornire la routine di avvio del thread con due elementi di dati.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 4.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 4.0
Windows Phone Silverlight
Disponibile da 8.0
Windows Phone
Disponibile da 8.1

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: