1. ホーム
  2. .net

[解決済み] KeyValuePairとTupleの使い分けはいつが良いのか?

2023-01-18 06:45:08

質問

私はこれまで、一般的に KeyValuePair<TKey,TValue> 型を使っています。これは、一方が他方のキーであるという意味で、ペアに関連するデータを持っている場合です。もしデータが無関係であれば Tuple<T1,T2> 型がより理にかなっているので、そちらを使用します。

今、私が読んだのは この記事 を一般に避けるべき理由について KeyValuePair<TKey,TValue> を避け Tuple<T1,T2> . 主な論点は、パフォーマンス上の利点として Tuple<T1,T2> .

パフォーマンス以外で、KVP が Tuple<T1,T2> ?

どのように解決するのですか?

さて、この型は、ひとつには名前が悪いと考えられます。KeyValuePair という名前は、キーと値を表すはずです。もし、2つのオブジェクトが実際にはキーと値ではなく、単なる2つのものであったらどうでしょうか?もし、メソッドやプロパティが、型が KeyValuePair<TKey, TValue> の値がキーと値であると予想します。これは本当に、意図を伝え、将来的に自分自身、あるいは場合によっては他のチームメンバーに対して明確にするためだけのものです。タプルはそのような関連性を示すものではありません。

タプルはまた、別の値を追加して、3タプル(またはトリプレット、どう呼んでもよい)にすることも容易です。F#のようないくつかの.NET言語では には特別な構文があり をタプルの周囲に置くことができます。

実装の観点からは Tuple は多くのことを行います KeyValuePair はそうではありません。タプルは比較可能であり、それらは IComparableIStructuralEquatable というインタフェースがあるため、2つのタプルを比較することが容易になります。