Tuple<T1,T2,T3,T4> Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje 4 ř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í součásti řazené kolekce členů.
- T2
Typ druhé součásti řazené kolekce členů.
- T3
Typ třetí součásti řazené kolekce členů.
- T4
Typ čtvrté součásti řazené kolekce členů.
- Dědičnost
-
Tuple<T1,T2,T3,T4>
- Atributy
- Implementuje
Poznámky
Řazená kolekce členů je datová struktura, která obsahuje určitý počet a pořadí hodnot. Třída Tuple<T1,T2,T3,T4> představuje 4 řazenou kolekci členů nebo čtyř členů, což je řazená kolekce členů, která má čtyři komponenty.
Objekt můžete vytvořit vytvořením instance Tuple<T1,T2,T3,T4> voláním Tuple<T1,T2,T3,T4> konstruktoru nebo statické Tuple.Create<T1,T2,T3,T4>(T1, T2, T3, T4) metody. Hodnotu komponent řazené kolekce členů můžete načíst pomocí vlastností jen pro čtení Item1, Item2, Item3a Item4 instance.
Řazené kolekce členů se obvykle používají čtyřmi různými způsoby:
K reprezentaci jediné datové sady. Například řazená kolekce členů může představovat záznam v databázi a její součásti mohou představovat jednotlivá pole záznamu.
K zajištění snadného přístupu k datové sadě a manipulace s datovou sadou. 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á byla vyhodnocena 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 běhů zadaných v devíti inningové hře) a průměrný počet hitů zadaných na inning. Tato 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#) neboByRef
parametrů (v Visual Basic). Předchozí příklad například vrátí vypočítanou statistiku spolu s názvem nadhazovače v matici Tuple<T1,T2,T3,T4> objektů.Pro předání více hodnot metodě prostřednictvím jediného parametru. Například metoda má jeden parametr, Thread.Start(Object) 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 rutinu spuštění vlákna se čtyřmi položkami dat.
Konstruktory
Tuple<T1,T2,T3,T4>(T1, T2, T3, T4) |
Inicializuje novou instanci Tuple<T1,T2,T3,T4> třídy. |
Vlastnosti
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 aktuálního Tuple<T1,T2,T3,T4> objektu třetí komponenty. |
Item4 |
Získá hodnotu aktuálního Tuple<T1,T2,T3,T4> objektu čtvrté součásti. |
Metody
Equals(Object) |
Vrátí hodnotu, která označ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() |
Type Získá aktuální instanci. (Zděděno od Object) |
MemberwiseClone() |
Vytvoří použádnou kopii aktuálního souboru 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í
IComparable.CompareTo(Object) |
Porovná aktuální Tuple<T1,T2,T3,T4> objekt se zadaným objektem a vrátí celé číslo, které označ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é označ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 aktuálního Tuple<T1,T2,T3,T4> objektu pomocí zadané výpočetní metody. |
ITuple.Item[Int32] |
Získá hodnotu zadaného |
ITuple.Length |
Získá počet prvků v sadě |
Metody rozšíření
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 |