Tuple<T1,T2,T3,T4> Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta una tupla a 4 o una tupla.
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
[System.Serializable]
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
type Tuple<'T1, 'T2, 'T3, 'T4> = class
interface IStructuralComparable
interface IStructuralEquatable
interface IComparable
[<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
type Tuple<'T1, 'T2, 'T3, 'T4> = class
interface IStructuralComparable
interface IStructuralEquatable
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
Parametri di tipo
- T1
Tipo del primo componente della tupla.
- T2
Tipo del secondo componente della tupla.
- T3
Tipo del terzo componente della tupla.
- T4
Tipo del quarto componente della tupla.
- Ereditarietà
-
Tuple<T1,T2,T3,T4>
- Attributi
- Implementazioni
Commenti
Una tupla è una struttura di dati con un numero e una sequenza di valori specifici. La Tuple<T1,T2,T3,T4> classe rappresenta una tupla a 4 o una tupla, ovvero una tupla con quattro componenti.
È possibile creare un'istanza di un Tuple<T1,T2,T3,T4> oggetto chiamando il Tuple<T1,T2,T3,T4> costruttore o il metodo statico Tuple.Create<T1,T2,T3,T4>(T1, T2, T3, T4) . È possibile recuperare il valore dei componenti della tupla usando le proprietà di istanza , Item2, Item3, e Item4 di sola Item1lettura.
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. L'esempio seguente definisce una matrice di Tuple<T1,T2,T3,T4> oggetti che contengono i nomi dei lanciatori di baseball, il numero di inning che hanno lanciato e il numero di esecuzioni ottenute (esecuzioni che hanno segnato senza errori di campo) e colpi che hanno rinunciato. La matrice viene passata al
ComputeStatisticsmetodo , che calcola la media di esecuzione guadagnata di ogni pitcher (il numero medio di esecuzioni date in un gioco a nove inning) e il numero medio di riscontri per inning. Il metodo usa anche queste due medie per calcolare una media ipotetica di efficacia.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.76open 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.76Imports 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.76Per restituire più valori da un metodo senza l'uso di
outparametri (in C#) oByRefparametri (in Visual Basic). Ad esempio, l'esempio precedente restituisce le statistiche calcolate, insieme al nome del pitcher, in una matrice di Tuple<T1,T2,T3,T4> oggetti.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,T4> oggetto come argomento del metodo, è possibile fornire la routine di avvio del thread con quattro elementi di dati.
Costruttori
| Nome | Descrizione |
|---|---|
| Tuple<T1,T2,T3,T4>(T1, T2, T3, T4) |
Inizializza una nuova istanza della classe Tuple<T1,T2,T3,T4>. |
Proprietà
| Nome | Descrizione |
|---|---|
| Item1 |
Ottiene il valore del primo componente dell'oggetto corrente Tuple<T1,T2,T3,T4> . |
| Item2 |
Ottiene il valore del secondo componente dell'oggetto corrente Tuple<T1,T2,T3,T4> . |
| Item3 |
Ottiene il valore del terzo componente dell'oggetto corrente Tuple<T1,T2,T3,T4> . |
| Item4 |
Ottiene il valore del quarto componente dell'oggetto corrente Tuple<T1,T2,T3,T4> . |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Restituisce un valore che indica se l'oggetto corrente Tuple<T1,T2,T3,T4> è uguale a un oggetto specificato. |
| GetHashCode() |
Restituisce il codice hash per l'oggetto corrente Tuple<T1,T2,T3,T4> . |
| 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,T4> istanza. |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| IComparable.CompareTo(Object) |
Confronta l'oggetto corrente Tuple<T1,T2,T3,T4> 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,T4> 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,T4> è 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,T4> utilizzando un metodo di calcolo specificato. |
| ITuple.Item[Int32] |
Ottiene il valore dell'elemento specificato |
| ITuple.Length |
Ottiene il numero di elementi nell'oggetto |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| Deconstruct<T1,T2,T3,T4>(Tuple<T1,T2,T3,T4>, T1, T2, T3, T4) |
Decostruisce una tupla con 4 elementi in variabili separate. |
| ToValueTuple<T1,T2,T3,T4>(Tuple<T1,T2,T3,T4>) |
Converte un'istanza della |