对于每个匿名函数,无法返回

本文关键字:返回 函数 于每个 | 更新日期: 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";
  }
}