英語で読む

次の方法で共有


Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> クラス

定義

n 組 (n は 8 以上) を表します。

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

型パラメーター

T1

組の 1 番目のコンポーネントの型。

T2

組の 2 番目のコンポーネントの型。

T3

組の 3 番目のコンポーネントの型。

T4

組の 4 番目のコンポーネントの型。

T5

組の 5 番目のコンポーネントの型。

T6

組の 6 番目のコンポーネントの型。

T7

組の 7 番目のコンポーネントの型。

TRest

組の残りのコンポーネントの型を定義する汎用 Tuple オブジェクト。

継承
Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>
属性
実装

注釈

タプルは、特定の数と値のシーケンスを持つデータ構造です。 クラスは Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 、8 つ以上のコンポーネントを持つ n タプルを表します。

静的Tuple.Createメソッドを呼び出すことで、Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>8 つのコンポーネントを持つオブジェクトをインスタンス化できます。 次の例では、20 未満の素数を含む 8 タプル (8 進数) を作成します。 型推論を使用して各コンポーネントの型を決定します。

C#
var primes = Tuple.Create(2, 3, 5, 7, 11, 13, 17, 19);
Console.WriteLine("Prime numbers less than 20: " + 
                  "{0}, {1}, {2}, {3}, {4}, {5}, {6}, and {7}",
                  primes.Item1, primes.Item2, primes.Item3, 
                  primes.Item4, primes.Item5, primes.Item6,
                  primes.Item7, primes.Rest.Item1);
// The example displays the following output:
//    Prime numbers less than 20: 2, 3, 5, 7, 11, 13, 17, and 19

コンストラクターを呼び出すことで、8 つ以上のコンポーネントを含む n タプル オブジェクトを Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> インスタンス化することもできます。 次の例では、 コンストラクターを Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 使用して、前の例で作成したタプルと同等の 8 タプルを作成します。

C#
var primes = new Tuple<Int32, Int32, Int32, Int32, Int32, Int32, Int32,  
             Tuple<Int32>> (2, 3, 5, 7, 11, 13, 17, new Tuple<Int32>(19));

注意

9 つ以上のコンポーネントを含む n タプルを作成するには、 コンストラクターを呼び出す Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 必要があります。 クラスの Tuple 静的ファクトリ メソッドでは、8 つを超えるコンポーネントを含むオブジェクトの Tuple 作成はサポートされていません。

コンストラクターを使用して 8 つ以上のコンポーネントを持つ Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> n タプルをインスタンス化するには、タプルの 8 番目から n番目のコンポーネントを定義するパラメーターとしてrestジェネリック Tuple オブジェクトを指定します。 このようにジェネリック Tuple オブジェクトを入れ子にすると、そのコンポーネントの数に実質的な制限がないタプルを作成できます。

次の例では、1860 年から 2000 年までの国勢調査ごとに、ミシガン州デトロイト市の人口データを含む 17 タプルを作成します。 タプルの最初のコンポーネントは都市名です。 2 番目のコンポーネントはデータ系列の開始日であり、3 番目のコンポーネントは開始日の母集団です。 後続の各コンポーネントは、10 年間隔で母集団を提供します。 17 タプルは、 オブジェクト内Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>に オブジェクトをTuple<T1,T2,T3>入れ子にすることによって作成されます。 (つまり、Tuple<T1,T2,T3>オブジェクトはクラス コンストラクターの Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> パラメーターのrest値として指定されます)。このTuple<T1,T2,T3,T4,T5,T6,T7,TRest>オブジェクトは、外側Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>のオブジェクトに入れ子になります。 (つまり、Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>オブジェクトは外部Tuple<T1,T2,T3,T4,T5,T6,T7,TRest>オブジェクトのクラス コンストラクターの パラメーターのrest値として指定されます)。

C#
var from1980 = Tuple.Create(1203339, 1027974, 951270);
var from1910 = new Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>> 
    (465766, 993078, 1568622, 1623452, 1849568, 1670144, 1511462, from1980);
var population = new Tuple<string, int, int, int, int, int, int,
    Tuple<int, int, int, int, int, int, int, Tuple<int, int, int>>> 
    ("Detroit", 1860, 45619, 79577, 116340, 205876, 285704, from1910);

タプルの最初の 7 つのコンポーネントの値を取得するには、読み取り専用Item1の 、Item2Item3Item5Item4Item6、、および の各インスタンス プロパティをItem7使用します。 追加のコンポーネントは入れ子になり、 プロパティから Rest 取得できます。 前の例では、through Item7 プロパティはItem1タプルの最初から 7 番目のコンポーネントを取得します。 8 番目から 14 番目のコンポーネントは、2 番目のレベルで入れ子になっているタプルに含まれており、through Rest.Item7 プロパティによってRest.Item1表されます。 15 番目から 17 番目のコンポーネントは、3 番目のレベルで入れ子になっているタプルに含まれており、 は though Rest.Rest.Item3 プロパティでRest.Rest.Item1表されます。

タプルは、一般的に次の 4 つの異なる方法で使用されます。

  • 1 つのデータ セットを表す。 たとえば、タプルはデータベース レコードを表し、そのコンポーネントはレコードの個々のフィールドを表すことができます。

  • データ セットへの簡単なアクセスと操作を提供します。

  • パラメーター (C#の場合) またはByRefパラメーター (Visual Basic の場合) を使用outせずにメソッドから複数の値を返す場合。 たとえば、前の例では、計算された統計と都市名を オブジェクトで Tuple<T1,T2,T3,T4,T5,T6,T7> 返します。

  • 1 つのパラメーターを使用してメソッドに複数の値を渡すには。 たとえば、 Thread.Start(Object) メソッドには、起動時にスレッドが実行するメソッドに 1 つの値を指定できる 1 つのパラメーターがあります。 メソッド引数として オブジェクトを Tuple<T1,T2,T3,T4,T5,T6,T7> 指定する場合は、スレッドのスタートアップ ルーチンに 7 つのデータ項目を指定できます。

コンストラクター

プロパティ

Item1

現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトの 1 番目のコンポーネントの値を取得します。

Item2

現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトの 2 番目のコンポーネントの値を取得します。

Item3

現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトの 3 番目のコンポーネントの値を取得します。

Item4

現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトの 4 番目のコンポーネントの値を取得します。

Item5

現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトの 5 番目のコンポーネントの値を取得します。

Item6

現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトの 6 番目のコンポーネントの値を取得します。

Item7

現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトの 7 番目のコンポーネントの値を取得します。

Rest

現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトの残りのコンポーネントを取得します。

メソッド

Equals(Object)

現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトが、指定されたオブジェクトと等しいかどうかを示す値を返します。

GetHashCode()

現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトのハッシュ コードを計算します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

この Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> インスタンスの値を表す文字列を返します。

明示的なインターフェイスの実装

IComparable.CompareTo(Object)

現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトと指定したオブジェクトを比較して、現在のオブジェクトが、並べ替え順序において、指定したオブジェクトの前後または同じ位置のいずれにあるかを示す整数を返します。

IStructuralComparable.CompareTo(Object, IComparer)

指定された比較子を使用して現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトと指定されたオブジェクトを比較し、並べ替え順序において、現在のオブジェクトの位置が指定されたオブジェクトの前になるか、後ろになるか、同じになるかを示す整数を返します。

IStructuralEquatable.Equals(Object, IEqualityComparer)

指定された比較メソッドに基づいて、現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトが指定したオブジェクトと等しいかどうかを示す値を返します。

IStructuralEquatable.GetHashCode(IEqualityComparer)

指定した計算メソッドを使用して、現在の Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> オブジェクトのハッシュ コードを計算します。

ITuple.Item[Int32]

指定した Tuple 要素の値を取得します。

ITuple.Length

Tuple にある要素の数を取得します。

適用対象

製品 バージョン
.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

こちらもご覧ください