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);
}

但是由于对象可以用于类似的目的(特别是因为KeyValuePair<>它经常用于代替 2 元素Tuple<>,直到它被添加到 C#4.0 中),我想知道这样的转换器是否已经内置到框架中?

我问的原因是我正在使用一个较旧的库(针对 .NET 3.5),该库KeyValuePair<>在许多地方使用元组可能更合适,并且我想Tuple<>在新代码中使用。所以我想弄清楚我是否可以将kvp这些方法的返回值转换或转换为,Tuple或者我是否需要定义自己的转换(或更改旧代码)。

4

1 回答 1

7

据我所知,BCL 中没有内置转换,而且绝对没有隐式或显式转换。我怀疑他们是否会添加这种转换,因为这些类型用于不同的目的。

我觉得你的版本很好。

于 2012-08-17T17:12:28.137 回答