任何人都知道List <icomparable> .Sort()是如何工作的?</icomparable>

时间:2011-12-03 05:22:24

标签: c# sorting

我想将排序逻辑实现为:如果存在则将Washington设置为第一个。 以下代码运作良好。但是,我不关心城市不等于“华盛顿”,并想知道为什么我需要返回-1并且不能返回0(在IComparable中意味着“等于”)?

P.S。我试过了,如果返回0,“芝加哥”将是第一个。

class Program
{
    static void Main(string[] args)
    {
        List<City> cityList  = new List<City>() 
        { 
            new City(){Name = "New York"},
            new City(){Name ="Los Angeles"},
            new City(){Name="Washington"},
            new City(){Name="Chicago"}
        };
        cityList.Sort();
    }
}

public class City: IComparable
{
    public string Name { get; set; }

    public int CompareTo(object obj)
    {
        if ((obj as City).Name == "Washington")
        {
            return 1;
        }
        else 
        {
            return -1;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

返回0表示字符串相等。

如果obj不是“华盛顿”时返回0,有时“华盛顿”将在当前实例中,您正在比较obj。这将阻止华盛顿跻身榜首。