对于每个匿名函数,无法返回
本文关键字:返回 函数 于每个 | 更新日期: 2023-09-27 18:33:23
我无法从ForEach返回,这是我的代码:
cards.ForEach(delegate(Card c){
if (c.GetFaceValue().ToString() == card) {
return "Your Card has been located";
}
错误:
无法将匿名方法转换为委托类型"..."。Card>',因为块中的某些返回类型不能隐式转换为委托返回类型
以下内容也不起作用,因为CheckCard
只能返回 void:
cards.ForEach(CheckCard);
public string CheckCard(Card c) {
if (c.GetFaceValue().ToString() == card) { // card = global
return "Your Card has been located";
}
}
错误:
"string SharedGamesClasses.Hand.CheckCard(SharedGamesClasses.Card)"的返回类型错误
您当前正在尝试从匿名函数返回消息,而不是调用代码;这不起作用,因为匿名函数是一个Action<T>
,它不能返回任何内容。
您是否只想查看cards
中的任何元素是否与card
匹配,如果是,则返回消息?
使用.Any()
而不是.ForEach()
:
if (cards.Any(c => c.GetFaceValue().ToString() == card))
{
return "Your Card has been located";
}
ForEach 有一个空 - 你不能返回一个值。
操作是 的委托快捷方式
public delegate void Action<in T>(
T obj
)
注意这里的空白。
http://msdn.microsoft.com/en-us/library/bwabdf9z.aspx
public void ForEach(
Action<T> action
)
查看提供的逻辑,我想您只是要终止迭代作为 sson,因为Card
找到。为此,只需使用一个简单的foreach
,例如:
string SomeFunc(IEnumerable<Card> cards)
{
foreach(Card in cards)
{
if(c.GetFaceValue().ToString() == card) {
return "Your Card has been located";
}
}