代码之家  ›  专栏  ›  技术社区  ›  Shantanu Gupta

如何从操作委托返回布尔值列表.ForEach()

  •  0
  • Shantanu Gupta  · 技术社区  · 15 年前

    因为ForEach正在寻找动作类型委托。那么有没有可能从delegage中返回bool值呢

    public bool AreSettingChanged()
    {
        objRpmButtonHolder.RpmButtonCollection.ForEach(btn
            => {
                if (btn.IsChanged)
                    return true;
        });
        return true;
    }
    
    5 回复  |  直到 15 年前
        1
  •  6
  •   Heinzi    15 年前

    试试这个

    public bool AreSettingChanged() 
    { 
        return objRpmButtonHolder.RpmButtonCollection.Any(b => b.IsChanged);
    } 
    
        2
  •  3
  •   Darin Dimitrov    15 年前

    ForEach 方法已定义。在你的情况下,你最好使用 Any 扩展方法:

    bool result = objRpmButtonHolder.RpmButtonCollection.Any(btn => btn.IsChanged);
    
        3
  •  2
  •   leppie    15 年前

    也许你在寻找另一种方法,比如 Find Exists .

        4
  •  0
  •   Alex Reitbort    15 年前
    public bool AreSettingChanged()
    {
        return objRpmButtonHolder.RpmButtonCollection.Exists(btn
            => { return btn.IsChanged; });
    }
    
        5
  •  0
  •   Grozz    15 年前

    最好的方法是使用上述任何方法,但对于从lambdas返回变量的更通用方法,您可以捕获外部变量并将其用作返回结果,即:

            public bool AreSettingChanged()
            {
                bool changed = false;
                objRpmButtonHolder.RpmButtonCollection.ForEach(btn
                    =>
                    {
                        if (btn.IsChanged)
                            changed = true;
                    });
                return changed;
            }