在Visual Studio的Watch窗口中使用LINQ表达式

时间:2018-04-24 08:08:02

标签: c# visual-studio linq debugging visual-studio-2017

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

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

调试此程序时,我想在Visual Studio的Watch窗口中将字节数组内容显示为单独的十六进制值。

所以我尝试在Watch Window中使用以下LINQ表达式,但没有成功:

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

观看窗口的错误消息:

  

错误CS1061:'byte []'不包含'Select'和。的定义   没有扩展方法'选择'接受第一个类型的参数   可以找到'byte []'(你是否错过了使用指令或者   装配参考?)

有没有人知道是否有办法在Visual Studio的Watch窗口中使用LINQ表达式而不安装第三方扩展?

此刻我正在使用VS2017 15.6.6。

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

enter image description here

3 个答案:

答案 0 :(得分:3)

我尝试重现您的问题并找到以下内容:

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

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

如果您的代码中有using System.Linq;使用来自该命名空间的内容,则监视窗口将查找并执行linq扩展。 (如果您不使用System.Linq中的任何内容,则会优化引用,因此在运行时不会加载此程序集,并且调试程序无法使用它。)

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

enter image description here

尝试添加以下内容:(正在进行测试)

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