閱讀英文版本

分享方式:


Tuple<T1,T2,T3,T4> 類別

定義

代表 4-Tuple 或四重物件。

C#
public class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable
C#
public class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable, System.Runtime.CompilerServices.ITuple
C#
[System.Serializable]
public class Tuple<T1,T2,T3,T4> : IComparable, System.Collections.IStructuralComparable, System.Collections.IStructuralEquatable

類型參數

T1

Tuple 第 1 個元件的型別。

T2

Tuple 第 2 個元件的型別。

T3

Tuple 第 3 個元件的型別。

T4

Tuple 第 4 個元件的型別。

繼承
Tuple<T1,T2,T3,T4>
屬性
實作

備註

Tuple 是具有特定數目和值序列的資料結構。 類別 Tuple<T1,T2,T3,T4> 代表 4 元組或三元組,這是具有四個元件的 Tuple。

您可以呼叫建構函式或靜態 Tuple.Create<T1,T2,T3,T4>(T1, T2, T3, T4) 方法來 Tuple<T1,T2,T3,T4> 具現化 Tuple<T1,T2,T3,T4> 物件。 您可以使用唯讀 Item1Item2Item3Item4 實例屬性來擷取 Tuple 元件的值。

Tuple 通常以四種不同的方式使用:

  • 表示單一資料集。 例如,Tuple 可以代表資料庫記錄,而其元件可以代表記錄的個別欄位。

  • 若要提供資料集的輕鬆存取和操作。 下列範例會定義物件的陣列 Tuple<T1,T2,T3,T4> ,這些物件包含足球投手的名稱、他們傾斜的旅館數目,以及 (計分且沒有欄位錯誤) 的回合數,以及他們放棄的點擊次數。 陣列會傳遞至 ComputeStatistics 方法,它會計算每個玩家所獲得的回合平均, (九個旅館遊戲) 中指定的平均執行次數,以及每個旅館所指定的平均點擊次數。 方法也會使用這兩個平均值來計算假設的有效性平均值。

    C#
    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
    
  • 若要從方法傳回多個值,而不在 C#) 中使用 out 參數 (,或在 ByRef Visual Basic) 中傳回參數 (。 例如,上一個範例會傳回其計算統計資料,以及物件陣列 Tuple<T1,T2,T3,T4> 中的投手名稱。

  • 透過單一參數將多個值傳遞至方法。 例如, Thread.Start(Object) 方法具有單一參數,可讓您將一個值提供給執行緒在啟動時執行的方法。 如果您提供 Tuple<T1,T2,T3,T4> 物件做為方法引數,則可以提供執行緒的啟動常式,其中包含四個專案的資料。

建構函式

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

初始化 Tuple<T1,T2,T3,T4> 類別的新執行個體。

屬性

Item1

取得目前 Tuple<T1,T2,T3,T4> 物件之第一個元件的值。

Item2

取得目前 Tuple<T1,T2,T3,T4> 物件之第二個元件的值。

Item3

取得目前 Tuple<T1,T2,T3,T4> 物件之第三個元件的值。

Item4

取得目前 Tuple<T1,T2,T3,T4> 物件之第四個元件的值。

方法

Equals(Object)

傳回值,這個值表示目前的 Tuple<T1,T2,T3,T4> 物件是否等於指定的物件。

GetHashCode()

傳回目前 Tuple<T1,T2,T3,T4> 物件的雜湊碼。

GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回字串,表示這個 Tuple<T1,T2,T3,T4> 執行個體的值。

明確介面實作

IComparable.CompareTo(Object)

將目前的 Tuple<T1,T2,T3,T4> 物件與指定的物件比較,並傳回可指出目前物件在排序次序中,是否在指定物件之前、之後或者相同之位置的整數。

IStructuralComparable.CompareTo(Object, IComparer)

使用指定的比較子將目前的 Tuple<T1,T2,T3,T4> 物件和指定的物件進行比較,並且傳回一個整數,表示目前的物件在排序順序中位於指定之物件的前面、後面還是相的位置。

IStructuralEquatable.Equals(Object, IEqualityComparer)

傳回值,這個值表示依據指定的比較方法,目前的 Tuple<T1,T2,T3,T4> 物件是否等於指定的物件。

IStructuralEquatable.GetHashCode(IEqualityComparer)

使用指定的計算方法,計算目前 Tuple<T1,T2,T3,T4> 物件的雜湊碼。

ITuple.Item[Int32]

取得指定的 Tuple 項目值。

ITuple.Length

取得 Tuple 中的項目數目。

擴充方法

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

將具有 4 個元素的元組解構為不同的變數。

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

Tuple 類別的執行個體轉換為 ValueTuple 結構的執行個體。

適用於

產品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

另請參閱