閱讀英文

共用方式為


Tuple<T1,T2> 類別

定義

代表 2-Tuple 或雙重物件。

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

類型參數

T1

Tuple 第 1 個元件的型別。

T2

Tuple 第 2 個元件的型別。

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

備註

Tuple 是具有特定數目和值序列的資料結構。 類別 Tuple<T1,T2> 代表 2 元組或配對,這是具有兩個元件的 Tuple。 2 元組類似于 KeyValuePair<TKey,TValue> 結構。

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

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

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

  • 若要提供資料集的輕鬆存取和操作。 下列範例會定義 物件的陣列 Tuple<T1,T2> ,其中包含學生名稱及其對應的測試分數。 然後逐一查看陣列以計算平均測試分數。

    C#
    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: 87.71 (n=7)
    
  • 若要從方法傳回多個值,而不在 C#) 中使用 out 參數 (,或在 ByRef Visual Basic) 中傳回參數 (。 例如,下列範例會使用 Tuple<T1,T2> 物件傳回整數除法所產生的商數和餘數。

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

建構函式

Tuple<T1,T2>(T1, T2)

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

屬性

Item1

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

Item2

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

方法

Equals(Object)

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

GetHashCode()

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

GetType()

取得目前執行個體的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

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

明確介面實作

IComparable.CompareTo(Object)

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

IStructuralComparable.CompareTo(Object, IComparer)

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

IStructuralEquatable.Equals(Object, IEqualityComparer)

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

IStructuralEquatable.GetHashCode(IEqualityComparer)

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

ITuple.Item[Int32]

取得指定的 Tuple 項目值。

ITuple.Length

取得 Tuple 中的項目數目。

擴充方法

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

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

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

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

另請參閱