繁体   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