Pár apró, de hasznos dolog van benne, nekem a rendezett IListben történő BinarySearch kellett belőle.
Eddig ezt csináltam:
int pos = ArrayList.Adapter(this).BinarySearch(dateTime, new Bar2DateTimeComparer());
Most már így, nem kell adaptert ráhúzni, és generikus a comparer hívás, így egy kicsit gyorsabb is:
int pos = this.BinarySearch(dateTime, new Bar2DateTimeComparer());
Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.
LEAVE A COMMENT
3 COMMENTS
Akkor javasolnám ezt a használatot inkább:
///
/// Helper class for BinarySearch to enable using of lamda expression for binary search
///
/// Generic type
public class Comparer : IComparer
{
private Func _compareFn;
public Comparer(Func fn)
{
_compareFn = fn;
}
public int Compare(T x, T y)
{
return _compareFn(x, y);
}
}
var myList = new List();
int index = myList.BinarySearch(, new myListitem { MyProperty = 1 },
new Comparer((a, b) => a. MyProperty.CompareTo(b. MyProperty)));
A Comparer-t felhasználva bármilyen listában könnyen lehet keresni, ha az rendezett,s nem kell hozzás nemmilyen lib.
Bocs, itt bent maradt egy , karakter:
myList.BinarySearch(,
Ez jópofa, lamda to comparer adapter, de nekem az a lényeg, hogy nem List IListben kell keresnem, hanem pl. ObservableCollectionben.