C# · 12月 25, 2021

c# – 关于列表排序和委托&lambda表达式Func的东西

List<bool> test = new List<bool>();test.sort(new Func<bool,bool,int>((b1,b2) => 1));

我错过了什么?

Error 2 Argument 1: cannot convert from ‘System.Func’ to ‘System.Collections.Generic.IComparer’

Error 1 The best overloaded method match for ‘System.Collections.Generic.List.sort(System.Collections.Generic.IComparer)’ has some invalid arguments

当我有

private int func(bool b1,bool b2){ return 1;}private void something(){ List<bool> test = new List<bool>(); test.sort(func);}

它工作正常.他们不是一回事吗?

解决方法 Func是错误的委托类型.您可以使用以下任一方法: test.sort((b1,b2) => 1);test.sort(new Comparison<bool>((b1,b2) => 1));