[英]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中有效,而在其他版本中沒有 - 在您的特定版本中尚未更新)。
本地函數(如GreaterThan
和OperateOnTwoNumbers
)只是語法糖,並且真正編譯成具有神秘名稱的靜態函數:
[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.