class p {
public string Name { get; set; }
public int Age { get; set; }
};
static List<p> ll = new List<p>
{
new p{Name="Jabc",Age=53},new p{Name="Mdef",Age=20},
new p{Name="Exab",Age=45},new p{Name="G123",Age=19}
};
protected static void SortList()
{
IComparer<p> mycomp = (x, y) => x.Name.CompareTo(y.Name); <==(Line 1)
ll.Sort((x, y) => x.Name.CompareTo(y.Name));<==(Line 2)
}
Здесь List.sort ожидает IComparer<p>
в качестве параметра. И это работает с лямбда
как показано в строке 2. Но когда я пытаюсь сделать как в строке 1, я получаю эту ошибку:
Невозможно преобразовать лямбда-выражение в
тип
System.Collections.Generic.IComparer»
потому что это не тип делегата
Я исследовал это довольно давно, но до сих пор не понимаю. Может быть, мое понимание IComparer не очень хорошее. Может кто-нибудь помочь мне?