public float SprawdźNajbliszy(float[] tb, out T Najbliszy, out float[] Zw) { SortedList <float, MiejsceIOdległość> ms = new SortedList <float, MiejsceIOdległość>(); Zw = new float[DzienikObiektów.Count]; int NrPrzeglądanego = 0; foreach (var item in DzienikObiektów.Values) { var tmp = item.ZnajdźNajbliszy(tb); Zw[NrPrzeglądanego++] = tmp.Odległość; try { ms.Add(tmp.Odległość, tmp); } catch { } if (ms.Count > IlośćPorównywanychPrzedZwróceniem) { ms.RemoveAt(ms.Count - 1); } } KeyValuePair <float, MiejsceIOdległość> zw = ms.First(); if (IlośćPorównywanychPrzedZwróceniem > 1) { foreach (var item in ms) { if (NaTabliceFloat.PorównajMiedzyWzorcami(zw.Value.Mapa, item.Value.Mapa, tb) * WspółczynikRóżnicujący + zw.Key - item.Key > 0) { zw = item; } } } Najbliszy = zw.Value.E.Wartość; return(zw.Key); }