Кто-нибудь знает, как работает List <ICompareable>.Sort ()? - PullRequest
0 голосов
/ 03 декабря 2011

Я хочу реализовать логику сортировки следующим образом: установите Вашингтон первым, если он существует.Следующий код работает хорошо. Однако я не забочусь о городах, не равных «Вашингтон», и задаюсь вопросом, почему мне нужно вернуть -1 и не может вернуть 0 (что означает «равно» в IComparable)?

PS Iпопробовал, "Чикаго" будет первым, если вернет 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 Ответ

1 голос
/ 03 декабря 2011

Возвращение 0 означает, что строка равна.

Если вы возвращаете 0, когда obj не «Вашингтон», иногда «Вашингтон» будет в текущем экземпляре , с которым вы сравниваете obj.Это не позволит Вашингтону подняться на вершину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...