タプルを使用する主な利点は何ですか? どのようなシナリオでこれらを使用する必要がありますか?
3 に答える
匿名のタプルクラスではなく、Tuple<>タイプについて話していると思います。
匿名型と同様に、Tuple <>を使用すると、いくつかのオブジェクトをグループ化するためだけに新しいクラスを宣言することを回避できます。匿名型とは異なり、タプル型には既知の名前があるため、メソッドの戻り値やパラメーター値などとして使用できます。
個人的には、Tuple <>を多用しないようにしています。これは、特にプリミティブ型で使用すると、コードを理解しにくくなる可能性があるためです(たとえば、Tupleが表示された場合、各フィールドが何を表しているのかがわかりません)。
タプルが非常に便利であることがわかった場所の1つは、辞書のキーとしてです。タプルはEquals()とGetHashCode()を実装しているため(==ではありません!)、複合キーに基づいて情報をキャッシュするプライベート辞書などに最適です。
ほとんどの場合、1 つのオブジェクトのみを渡すことができるオブジェクトのグループを渡すためだけに、いくつかのプロパティを持つクラス/構造体を宣言することを避けるために使用されます。
通過する URL のリストがあり、エラー (4xx または 5xx) が発生した場合はリストを作成し、後でそれをユーザーに表示するか、デバッガーで確認したいとします。
使用する 1 つまたは 2 つの関数の構造体を作成する代わりに、Web 例外をキャッチしてTuple<string, int>
(url, http エラー コード) を取得します。リストに 0 個以上のアイテムがある場合、ブレークポイントがオンになっている foreach ループでさえあるかもしれません。そんな時に重宝します。