2012-08-15 101 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中沒有我知道的內置轉換,並且絕對沒有隱式或顯式轉換。我懷疑他們會添加此轉換,因爲這些類型用於不同的目的。

我認爲你的版本沒問題。

相關問題