C# 将Func传递到列表中。查找
我有以下代码:C# 将Func传递到列表中。查找,c#,func,C#,Func,我有以下代码: [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
[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;
Func ByName=(name,player)=>player.name==name;
我不知道如何传递第二个(player)参数。有可能吗?将
播放器提供给传递给列表的谓词。查找,这样您就可以按名称传递给:
Player player = playerList.Find(p => ByName("Davy", p));
playerList.Remove(player);
您可以使用,而不是使用Find
和Remove
如果要在Find
方法中使用ByName
委托,则必须对列表中的每个元素执行该委托。例如:
string player = playerList.Find((playerElement) => ByName("Davy", playerElement));
播放器
由列表提供。查找
-看起来您需要按名称(字符串名称){return p=>p.name==name;}
。您的示例无法编译,因为没有使用Func
的List.Find重载。这也可以使用playerList.Find(p=>ByName(“Davy”,p))代码>@nemesv我想你应该加上这个作为答案。:)如果他不想使用委托,但想使用方法,我想他不会详细说明委托。。。似乎它没有抓住问题的重点。@davy-什么没有编译?@Lee-抱歉,删除了评论并接受了答案。谢谢你的帮助。playerElement
周围的括号不是必需的。@svick。是的,没有必要。
string player = playerList.Find((playerElement) => ByName("Davy", playerElement));