如何跳过lambda代码里面的函数?

dru*_*sta 7 c# debugging visual-studio-2010

考虑下面的片段:

    [DebuggerStepThrough]
    private A GetA(string b)
    {
        return this.aCollection.FirstOrDefault(a => a.b == b);
    }
Run Code Online (Sandbox Code Playgroud)

如果我使用F11,调试器不会跳过该函数,而是在ab == b处停止.

有没有办法跳过这个功能而不是使用F10?

Tim*_*ter 2

我可以理解为什么会发生这种情况,但没有办法解决它。也许有人可以在此基础上继续发展。lambda 表达式被编译成匿名方法。

我看到:Program.GetA.AnonymousMethod__0(测试a)

就像您在所示方法中调用另一个方法一样,按 F11 将进入该方法。例如/

[DebuggerStepThrough]
static A GetA<A>(IList<A> aCollection, string b) where A : Test
{
    DoNoOp();
    return aCollection.FirstOrDefault(a => a.b == b);
}

static void DoNoOp()
{
    // noop
    Console.WriteLine("got here");
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢蒂姆的回答。我也理解为什么会发生这种情况,因为 lambda 只是另一个函数的快捷方式。我满怀希望地询问,也许我错过了 VS2010 中的一些新东西。通过将选项扩展为“跳过属性和运算符(仅限托管)”,VS2010 的调试器似乎可以得到一些改进。与 lambda 表达式。 (2认同)