元组<t1,t2>和KeyValuePair之间的转换<t1,t2 =“”> </t1,> </t1,t2>

时间:2012-08-15 14:21:41

标签: c#-4.0

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值转换或转换为{{1}},或者我是否需要定义自己的转换(或更改旧代码)。 / p>

1 个答案:

答案 0 :(得分:6)

我知道BCL中没有内置转换,并且肯定没有隐式或显式转换。我怀疑他们是否会添加此转换,因为这些类型用于不同的目的。

我认为你的版本很好。