簡體   English   中英

在 Visual Studio 的監視窗口中使用 LINQ 表達式

[英]Using LINQ expressions in Visual Studio's Watch window

我在程序中有一個 byte[] 變量,例如:

byte[] myByteArray = new byte[] { 0xF0, 0x0F };

在調試這個程序時,我想在 Visual Studio 的 Watch 窗口中將字節數組內容顯示為單獨的十六進制值。

所以我嘗試在 Watch Window 中使用以下 LINQ 表達式,但沒有成功:

myByteArray.Select(value => value.ToString("X2")).ToArray()

觀察窗口的錯誤信息:

錯誤 CS1061:“byte[]”不包含“Select”的定義,並且找不到接受“byte[]”類型的第一個參數的擴展方法“Select”(您是否缺少 using 指令或程序集引用? )

有誰知道是否有一種方法可以在不安裝第三方擴展的情況下在 Visual Studio 的監視窗口中使用 LINQ 表達式?

我此時正在使用 VS2017 15.6.6。

編輯:此問題的屏幕截圖...

在此處輸入圖片說明

如果代碼中沒有 'using System.Linq' 語句,您仍然可以通過手動調用擴展方法來使用 Linq 查詢:

System.Linq.Enumerable.Select(collection, x=>x.Name)

我試圖重現您的問題並發現以下內容:

似乎監視窗口使用了您在代碼中引用(通過using )的命名空間。

如果您不在代碼文件中使用 linq(和System.Linq命名空間),監視窗口將找不到擴展名。

如果你有一個using System.Linq; 並在您的代碼中使用該命名空間中的某些內容,監視窗口將查找並執行 linq 擴展。 (如果您不使用System.Linq的任何System.Linq該引用將被優化掉,因此該程序集不會在運行時加載並且調試器無法使用它)。

在此處輸入圖片說明

嘗試添加以下內容:(它正在我的測試中工作)

> using System.Collections.Generic;
 using System.Linq;

暫無
暫無

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

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