/// <summary> /// Suma dos ListaExtra.ListaPeso coordenada a coordenada. /// </summary> /// <param name="left">Primer sumando.</param> /// <param name="right">Segundo sumando.</param> /// <returns></returns> protected static ListaPeso <T, TVal> Sumar(ListaPeso <T, TVal> left, IDictionary <T, TVal> right) { var ret = new ListaPeso <T, TVal> (left.Suma, left.Nulo, left.Comparador); foreach (var x in left) { ret [x.Key] = x.Value; } foreach (var x in right) { ret [x.Key] = ret.Suma(ret [x.Key], x.Value); } return(ret); }
/// <summary> /// Devuelve la lista inversa a esta instancia. /// </summary> /// <returns></returns> public ListaPeso <T, TVal> Inverso() { if (Inv == null) { throw new NullReferenceException("No está definito Inv"); } var ret = new ListaPeso <T, TVal> (Suma, Nulo, Comparador); ret.Inv = Inv; foreach (var x in Keys) { ret.Add(x, Inv(this [x])); } return(ret); }