2012-08-15 6 views
6

¿Hay alguna conversión o conversión entre KeyValuePair<T1, T2> y Tuple<T1, T2>?Conversión entre Tuple <T1,T2> y KeyValuePair <T1, T2>

Sé que esto sería un método de extensión trivial:

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

Pero ya que los objetos pueden ser utilizados para fines similares (sobre todo porque KeyValuePair<> se utiliza a menudo en lugar de un elemento de Tuple<> 2 hasta que sea además de C# 4.0), me preguntaba si ese convertidor ya estaba incorporado en el marco.

Motivo que pido es que estoy trabajando con una biblioteca anterior (dirigida a .NET 3.5) que usó KeyValuePair<> en muchos lugares en los que un Tuple podría ser más apropiado, y quiero usar Tuple<> en el nuevo código. así que estoy tratando de averiguar si puedo simplemente convertir o convertir los valores de devolución kvp de estos métodos al Tuple o si necesito definir mi propia conversión (o cambiar el código anterior).

Respuesta

6

No existe una conversión incorporada en el BCL de la que tenga conocimiento, y definitivamente no hay conversión implícita o explícita. Dudo que alguna vez agreguen esta conversión porque los tipos se usan para diferentes propósitos.

Creo que su versión está bien.

Cuestiones relacionadas