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.

July 30, 2012 / by Zsolt Soczó

BCLExtensions

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

  • LewisFM July 30, 2012

    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.

  • LewisFM July 30, 2012

    Bocs, itt bent maradt egy , karakter:
    myList.BinarySearch(,

  • Soczó Zsolt July 30, 2012

    Ez jópofa, lamda to comparer adapter, de nekem az a lényeg, hogy nem List IListben kell keresnem, hanem pl. ObservableCollectionben.