の例をオンラインで見ていましたTuple
が、理想的な使用法は見当たりません。
つまり、変数を格納する場所のようです。
の実用的な用途はありますかTuple
。私がやりたいのは、値をタプルに渡してから、すべて文字列である 3 つの値を返すようにすることです。
の例をオンラインで見ていましたTuple
が、理想的な使用法は見当たりません。
つまり、変数を格納する場所のようです。
の実用的な用途はありますかTuple
。私がやりたいのは、値をタプルに渡してから、すべて文字列である 3 つの値を返すようにすることです。
Tuple は List に対応するものです。
List は同じタイプのアイテムの 0-N を格納しますが、Tupleは (おそらく)異なるタイプのアイテムの 1-M を格納します。ここで、N は無制限で、M は静的に固定/定義されています。
これらの各項目には、名前 (または整列されている場合は「インデックス」) によって厳密に型指定された方法でアクセスできます。
したがって、これらは匿名型に似ています (実際、これは「タプル」ではなく「レコード」に似ています。名前は任意に選択できるためです)。
new { _0 = value0, _1 = value1, /* etc, as needed */ }
しかし、Tuple 型は主格的に型付けAction
されているため ( orのように、一連の異なるクラスによってサポートされているFunc
)、特定のTuple 型を (メソッド シグネチャなどで) 明示的に指定できますが、これには匿名型を使用することはできません。
C# でのタプルの実用化は、サポートの欠如 (分解なし、アプリケーションなしなど) によって妨げられていると思いますが、Scala などの言語では常にタプルが使用されています。C# のアプローチは、通常、「新しい名前付き型を作成する」ことですがTuple
、別の使用可能なツールとして型を導入します。
(タプルが非常に役立つ大きな場所は中間計算です。ただし、C# には匿名型があり、LINQ で見られるように、計算が同じメソッド内で行われるほとんどの場合、この役割を十分に果たします。)
Microsoft .NET 4.0ではTuple
、異種タイプのデータの固定サイズのコレクションであるというタイプが導入されています。配列と同様に、タプルのサイズは固定されており、一度作成すると変更できません。配列とは異なり、タプルの各要素は異なるタイプである可能性があり、タプルは各要素の強い型付けを保証できます。これは、シナリオで非常に便利です。それ以外の場合は、カスタムタイプまたは構造体を使用して実現できます。
Tuple は、型指定された不変のジェネリック コンストラクトです。これは、概念的に関連するデータを格納するための便利なコンテナーです。コメント付きのメンバーと追加のメソッドを含む単純なクラスは、重要なことに役立ちます。しかし、Tuple を使用して、さまざまな関連情報を格納できます。タプルは、情報隠蔽の分野では不十分です。便利な短期コンテナとして優れています。
Tuple は、複数のアイテムをグループ化するための軽量クラスです。これは、2 つの項目をグループ化したいときに新しいクラスを定義する代わりの方法です。
1 つのメソッドから複数の項目を返したい場合に便利ですが、ref または out パラメーターを使用できません。
一時的なデータ保存用にあるようです。非常にローカライズされた使用。これらは、独自のクラスを作成するのに時間がかかりすぎるか、データの有効期間が非常に短いために実際には価値がない場合です。
.NET Framework 4 では、構造化データを含むタプル オブジェクトを作成するための System.Tuple クラスが導入されています。また、1 ~ 8 個のコンポーネントを持つタプルをサポートする汎用タプル クラスも提供します。これがC#の例です
var objTupe = new System.Tuple<string, string, double,long>"Mike","Anderson",29000,9999999999);
Response.Write("Item1 : " + objTupe.Item1);
Response.Write("<br/>Item2 : " + objTupe.Item2);
Response.Write("<br/>Item3 : " + objTupe.Item3);
Response.Write("<br/>Item4 : " + objTupe.Item4);