7

との間に組み込みの変換またはキャストはKeyValuePair<T1, T2>ありTuple<T1, T2>ますか?

私はこれが簡単な拡張方法になることを知っています:

public static KeyValuePair<T1, T2> ToPair<T1, T2>(this Tuple<T1, T2> source)
{
    return new KeyValuePair<T1, T2>(source.Item1, source.Item2);
}

public static Tuple<T1, T2> ToTuple<T1, T2>(this KeyValuePair<T1, T2> source)
{
    return Tuple.Create(source.Key, source.Value);
}

しかし、オブジェクトは同様の目的で使用できるため(特に、 C#4.0に追加されるまでKeyValuePair<>2要素の代わりに使用されることが多かったためTuple<>)、そのようなコンバーターはすでにフレームワークに組み込まれているのでしょうか。

私が尋ねる理由は、タプルがより適切である可能性がある多くの場所で使用されている古いライブラリ(.NET 3.5をターゲットとする)を使用していて、新しいコードでKeyValuePair<>使用したいからです。したがって、これらのメソッドからの戻り値をキャストまたは変換できるかどうか、または独自の変換を定義する必要があるかどうか(または古いコードを変更する必要があるかどうか)Tuple<>を把握しようとしています。kvpTuple

4

1 に答える 1

7

私が知っているBCLには組み込みの変換はなく、暗黙的または明示的なキャストもありません。タイプはさまざまな目的で使用されるため、この変換が追加されることはないと思います。

あなたのバージョンは大丈夫だと思います。

于 2012-08-17T17:12:28.137 に答える