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

我错过了什么?

错误 2 参数 1:无法从 'System.Func' 转换为 'System.Collections.Generic.IComparer'

错误 1 ​​'System.Collections.Generic.List.Sort(System.Collections.Generic.IComparer)' 的最佳重载方法匹配有一些无效参数

当我有

private int func(bool b1, bool b2)
{
    return 1;
}

private void something()
{
    List<bool> test = new List<bool>();
    test.Sort(func);
}

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

4

4 回答 4

11

Func 是错误的委托类型。您可以使用以下任何一种:

test.Sort((b1, b2) => 1);
test.Sort(new Comparison<bool>((b1, b2) => 1));
于 2012-07-23T20:33:37.477 回答
0

因为你需要传递它 a System.Comparison<T>,而不是 a Func<something>。放下new Func...它,它应该可以工作。

test.Sort((b1, b2) => !b1 && b2 ? -1 : b1 && !b2 ? +1 : 0); 
于 2012-07-23T20:36:46.857 回答
0

您也可以尝试:

test.Sort( delegate(bool b1,bool b2){return 1;});
于 2012-07-23T20:37:46.250 回答
0

去除那个new Func<...>

var test = new List<bool>();
test.Sort((a, b) => 1);
于 2012-07-23T20:40:31.140 回答