private static void Main()
{
Console.WriteLine(GetRandomInteger());
Console.ReadLine();
}
[DebuggerHidden]
private static int GetRandomInteger()
{
Func<int> random =() => 4;
return GetRandomInteger(random);
}
[DebuggerHidden]
private static int GetRandomInteger(Func<int> random)
{
return random();
}
使用上面的代碼,有沒有辦法阻止Func<int> random =() => 4;
行在調試時進入?當主機方法爲DebuggerHidden時,防止lambda進入步驟DebuggerHidden
您可以編輯IL以將'[DebuggerHidden]'屬性應用於爲匿名方法生成的函數,但我不認爲有直接從C#執行此操作的方法。 (一般來說,如果你接受任意的'Func',調試器將根據它們是否具有該屬性來進入它們,換句話說,該屬性不是遞歸的。) –
dlev
這是一個不可解的拉姆達斯問題。理想情況下,C#編譯器會將屬性傳播給實現lambda的隱藏類。但它並沒有這樣做,團隊已經意識到了這個問題。他們肯定不喜歡實施它,選擇傳播的屬性是一個滑坡。一如既往地保持Debug.StepOut方便。 –