誰かがタプルとは何か、そして実際のシナリオでそれを使用する方法を説明してください. これが私のコーディング経験をどのように豊かにするか知りたいですか?
5 に答える
このmsdnの記事では、例を挙げて非常によく説明されています。「タプルは、特定の数と要素のシーケンスを持つデータ構造です」。
タプルは一般的に次の 4 つの方法で使用されます。
単一のデータ セットを表すこと。たとえば、タプルはデータベース レコードを表すことができ、そのコンポーネントはレコードの個々のフィールドを表すことができます。
データセットへの簡単なアクセスと操作を提供します。
ByRef
out パラメーター (C# の場合) またはパラメーター (Visual Basic の場合)を使用せずに、メソッドから複数の値を返すには。単一のパラメーターを介してメソッドに複数の値を渡すこと。たとえば、
Thread.Start(Object)
メソッドには、スレッドが起動時に実行するメソッドに 1 つの値を指定できる単一のパラメーターがあります。メソッドの引数Tuple<T1, T2, T3>
としてオブジェクトを指定すると、スレッドのスタートアップ ルーチンに 3 つのデータ項目を指定できます。
タプルを使用すると、カスタム クラスを作成しなくても、型が異なる可能性のある複数の値を 1 つのオブジェクトに結合できます。これは、たとえば 3 つの関連する値を返すメソッドを記述したいが、新しいクラスを作成したくない場合に役立ちます。
通常はクラスを作成する必要がありますが、これにより各プロパティに便利な名前を付けることができます。Item1
プロパティが、Item2
、Item3
などと呼ばれるため、タプルを多用するコードはすぐに読めなくなります。
タプルとクラスの違いは、タプルにはプロパティ名がないことです。これはほとんど良いことではありません.タプルを使用するのは、たとえば抽象的な数式のように引数がかなり無意味な場合だけです. 5、6、7 次元を超える抽象計算では、座標にタプルが必要になる場合があります。
これは Tuple 型について知っておくべき最も重要なことです。タプルは構造体ではなくクラスです。したがって、マネージド ヒープに割り当てられます。割り当てられる各クラス インスタンスは、ガベージ コレクションの負担を増やします。
注: プロパティ Item1、Item2、およびその他にはセッターがありません。それらを割り当てることはできません。Tuple は、メモリ内に作成されると不変です。
タプルクラスを使用すると、特定の用途向けに特定のクラスを定義しないことで、開発者は「迅速かつ怠惰」になることができます。
プロパティ名はItem1、Item2、Item3 ...ですが、場合によっては、またはドキュメントがないと意味がない場合があります。
タプルクラスには、強く型付けされたジェネリックパラメーターがあります。それでも、タプルクラスのユーザーは、ジェネリックパラメーターのタイプから推測できます。