在Visual Studio的“监视”窗口中使用LINQ表达式

sɐu*_*qɐp 5 c# linq debugging visual-studio visual-studio-2017

我在程序中有一个byte []变量,例如:

byte[] myByteArray = new byte[] { 0xF0, 0x0F };
Run Code Online (Sandbox Code Playgroud)

在调试该程序时,我想在Visual Studio的“监视”窗口中将字节数组的内容显示为单个十六进制值。

因此,我尝试在监视窗口中使用以下LINQ表达式,但未成功:

myByteArray.Select(value => value.ToString("X2")).ToArray()
Run Code Online (Sandbox Code Playgroud)

监视窗口的错误消息:

错误CS1061:“ byte []”不包含“ Select”的定义,并且找不到找到接受类型为“ byte []”的第一个参数的扩展方法“ Select”(您是否缺少using指令或程序集引用? )

有谁知道在Visual Studio的“监视”窗口中是否有一种无需安装第三方扩展即可使用LINQ表达式的方法?

我目前正在使用VS2017 15.6.6。

编辑:此问题的屏幕截图...

在此处输入图片说明

bad*_*die 12

如果代码中没有 'using System.Linq' 语句,您仍然可以通过手动调用扩展方法来使用 Linq 查询:

System.Linq.Enumerable.Select(collection, x=>x.Name)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这正是我正在寻找的。 (2认同)

Ren*_*ogt 8

我试图重现您的问题并发现以下内容:

似乎监视窗口使用了您using在代码中引用(通过)的命名空间。

如果System.Linq在代码文件中不使用 linq(和命名空间),监视窗口将找不到扩展名。

如果你有一个using System.Linq;使用来自该命名空间在你的代码什么的,监视窗口中找到并执行LINQ扩展。(如果您不使用System.Linq引用中的任何内容被优化掉,那么这个程序集不会在运行时加载并且调试器不能使用它)。