簡體   English   中英

如何讓Visual Studio 2017以交互方式調試此行?

[英]How can I get Visual Studio 2017 to interactively debug this line?

我將以下代碼設置為一個虛擬示例,以說明我在生產代碼中找到的內容。

static void Main(string[] args)
{
    bool GreaterThan(int x, int y)
    {
        return x > y;
    }

    bool OperateOnTwoNumbers(int x, int y, Func<int, int, bool> func)
    {
        return func(x, y);
    }

    var twoGreaterThanOne = OperateOnTwoNumbers(2, 1, GreaterThan);

}

當我在OperateOnTwoNumbers(2, 1, GreaterThan)上設置手表或使用Shift + F9進行OperateOnTwoNumbers(2, 1, GreaterThan)調試時,出現以下錯誤。

OperateOnTwoNumbers(2,1,GreaterThan)錯誤CS0103:當前上下文中不存在名稱“OperateOnTwoNumbers”

但代碼本身運行正常,在我跨過該行后,我可以看到分配給變量的值。

這已在多台計算機上復制,包含生產代碼和虛擬示例,因此我認為這不是一個環境問題。

這是一個問題的錄音,可以通過點擊錄音並在其直接地址查看來全面查看。

記錄問題

有任何想法嗎?

我懷疑表達式評估程序尚未更新以處理本地函數(或者,如果它在某些版本的VS中有效,而在其他版本中沒有 - 在您的特定版本中尚未更新)。

本地函數(如GreaterThanOperateOnTwoNumbers )只是語法糖,並且真正編譯成具有神秘名稱的靜態函數:

[CompilerGenerated]
internal static bool <Main>g__OperateOnTwoNumbers|0_1(int x, int y, Func<int, int, bool> func)
{
  return func(x, y);
}

然后打電話給他們:

Program.<Main>g__OperateOnTwoNumbers|0_1(...);

所以表達式求值程序應該意識到,但它沒有並嘗試用OperateOnTwoNumbers名稱調用函數(從編譯器錯誤消息中可以看到“名稱'OperateOnTwoNumbers'在當前上下文中不存在”),並且確實存在沒有這樣的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM