2012-08-15 44 views
6

是否有任何内置转换或在KeyValuePair<T1, T2>Tuple<T1, T2>之间转换?Tuple之间的转换<T1,T2>和KeyValuePair <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),我想知道这样的转换器是否已经嵌入到框架中?

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

回答

6

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

我认为你的版本没问题。

相关问题