Soci (Soczó Zsolt) szakmai blogja

2012.07.30.

BCLExtensions

Filed under: .NET,.NET 4,C#,CLR,Szakmai élet — Soczó Zsolt @ 11:03

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

3 Comments

  1. 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.

    Comment by LewisFM — 2012.07.30. @ 11:26

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

    Comment by LewisFM — 2012.07.30. @ 11:28

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

    Comment by Soczó Zsolt — 2012.07.30. @ 12:14

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress