0

次のコードがあります。

    [TestMethod]
    public void A_Player_Can_Be_Deleted_From_The_List()
    {                     
        Player player = playerList.Find(ByName("Davy",whatGoesHere?);
        playerList.Remove(player);

        playerList.Count.Should().Be(2);
    }

Func 'ByName' は次のように定義されます。

Func<string, Player, bool> ByName = (name, player) => player.Name == name;

2 番目の (プレーヤー) パラメーターを渡す方法がわかりません。出来ますか?

4

2 に答える 2

1

playerに渡す述語に提供されるためList.Find<T>、次のように渡すだけで済みますByName

Player player = playerList.Find(p => ByName("Davy", p));
playerList.Remove(player);

を使用する代わりに、FindieをRemove使用できますList<T>.RemoveAll

playerList.RemoveAll(p => ByName("Davy", p));
于 2012-09-22T15:45:10.367 に答える
1

ByNameメソッドでデリゲートを使用する場合Findは、リスト内の各要素に対してデリゲートを実行する必要があります。例えば:

string player = playerList.Find((playerElement) => ByName("Davy", playerElement));
于 2012-09-22T15:47:35.440 に答える