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

あなたはそれを渡す必要があるので、System.Comparison<T>ではなく、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 に答える