Esiste una conversione o un cast incorporato tra KeyValuePair<T1, T2>
e Tuple<T1, T2>
?Conversione tra Tuple <T1,T2> e KeyValuePair <T1, T2>
So che questo sarebbe un metodo di estensione banale:
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);
}
Ma dal momento che gli oggetti possono essere utilizzati per scopi simili (soprattutto perché KeyValuePair<>
è stato spesso utilizzato al posto di un 2 elemento Tuple<>
fino a quando è aggiunta a C# 4.0), mi stavo chiedendo se un tale convertitore fosse già integrato nel framework?
Motivo che chiedo è che sto lavorando con una vecchia libreria (targeting .NET 3.5) che ha utilizzato KeyValuePair<>
in molti posti che una tupla potrebbe essere più appropriata, e voglio usare Tuple<>
nel nuovo codice. quindi sto cercando di capire se posso semplicemente trasmettere o convertire i valori di ritorno kvp
da questi metodi a Tuple
o se devo definire la mia conversione (o modificare il codice precedente).