2012-08-15 9 views
6

Czy istnieje jakakolwiek wbudowana konwersja lub rzutowanie między KeyValuePair<T1, T2> i Tuple<T1, T2>?Konwersja między krotką <T1,T2> a KeyValuePair <T1, T2>

wiem, że będzie to trywialne metodę rozszerzenia:

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

Ale od obiektów może być użyta do podobnych celów (zwłaszcza KeyValuePair<> był często używany w miejsce 2 elementu Tuple<> aż to dodatek do C# 4.0), zastanawiałem się, czy taki konwerter był już wbudowany w framework?

Pytam o to pracuję ze starszym kierowania biblioteką (.NET 3.5), który używany KeyValuePair<> w wielu miejscach, że krotka może być bardziej odpowiednie, a chcę użyć Tuple<> w nowym kodeksie. więc próbuję dowiedzieć się, czy mogę po prostu rzucić lub przekonwertować wartości zwracanych kvp z tych metod na Tuple lub jeśli muszę zdefiniować moją własną konwersję (lub zmienić starszy kod).

Odpowiedz

6

Nie ma wbudowanej konwersji w BCL, której jestem świadomy i nie ma z pewnością żadnego niejawnego lub jawnego rzutu. Wątpię, by kiedykolwiek dodali tę konwersję, ponieważ typy są używane do różnych celów.

Myślę, że twoja wersja jest w porządku.

Powiązane problemy