Давайте разделим проблему так, чтобы вы могли понять каждую часть в отдельности:
Метод сортировки:
Этот принимает делегата, который содержит «как» сравнить два элемента списка.
Как только вы научите список сравнивать с элементами, он сможет отсортировать все элементы, сравнивая их попарно.
Действующий делегат
Встроенный делегат - это объявление метода, который что-то делает.
delegate(Person p1, Person p2) { return p1.age.CompareTo(p2.age);
Этот делегат рассказывает, как сравнивать два объекта Person. Вы говорите это компилятору: чтобы сравнить p1 с p2, вы должны сравнить p1.age с p2.age .
Объединение вещей
Следующая строка кода содержит оба элемента, метод сортировки и способ сравнения двух объектов People.
people.Sort(delegate(Person p1, Person p2) { return p1.age.CompareTo(p2.age); });
Так что теперь он знает, как отсортировать список.