我想将排序逻辑实现为:如果存在则将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;
}
}
}
答案 0 :(得分:1)
返回0表示字符串相等。
如果obj不是“华盛顿”时返回0,有时“华盛顿”将在当前实例中,您正在比较obj。这将阻止华盛顿跻身榜首。