mandag 9. november 2009

Sort your Arrays

Sometimes simple things get complex and visa/versa. I've done sorting of arrays many times. Finally it struck me. I've been wasting time again... Just define you sorting algoritm in the CompareTo method. Never return any default values like 1, 0 or -1. It will make you code fail...

public class Item : IComparable<item>
{
   
    public Item(int id, string name)
    {
        Id = id;
        Name = name;
    }

    public int Id
    { get; set; }

    public string Name
    {get; set;}

    public string[] Email
    { get; set; }

    public int CompareTo(Item item)
    {
        var compare = Name.CompareTo(item.Name);
        if (compare != 0)
            return compare;

        return Id.CompareTo(item.Id);
    }
}

Now I test my code...

[Test]
public void SortArray()
{
var array = new[] {new Item(1, "B"), new Item(2, "C"), new Item(3, "A")};

Array.Sort(array);

Assert.AreEqual(array[0].Name, "A");
Assert.AreEqual(array[1].Name, "B");
Assert.AreEqual(array[2].Name, "C");
}

Ingen kommentarer:

Legg inn en kommentar