C# 在VisualStudio的监视窗口中使用LINQ表达式
我在程序中有一个byte[]变量,例如:C# 在VisualStudio的监视窗口中使用LINQ表达式,c#,visual-studio,linq,debugging,visual-studio-2017,C#,Visual Studio,Linq,Debugging,Visual Studio 2017,我在程序中有一个byte[]变量,例如: byte[] myByteArray = new byte[] { 0xF0, 0x0F }; 在调试这个程序时,我希望在VisualStudio的监视窗口中将字节数组内容显示为单个十六进制值 因此,我尝试在Watch窗口中使用以下LINQ表达式,但没有成功: myByteArray.Select(value => value.ToString("X2")).ToArray() 监视窗口的错误消息: 错误CS1061:“字节[]”不包含“选择”
byte[] myByteArray = new byte[] { 0xF0, 0x0F };
在调试这个程序时,我希望在VisualStudio的监视窗口中将字节数组内容显示为单个十六进制值
因此,我尝试在Watch窗口中使用以下LINQ表达式,但没有成功:
myByteArray.Select(value => value.ToString("X2")).ToArray()
监视窗口的错误消息:
错误CS1061:“字节[]”不包含“选择”和的定义
没有接受类型为的第一个参数的扩展方法“Select”
如果缺少using指令或
汇编参考
有人知道有没有一种方法可以在VisualStudio的监视窗口中使用LINQ表达式而不安装第三方扩展
目前我正在使用VS2017 15.6.6
编辑:这个问题的截图
我试图重现您的问题,并发现以下问题: “监视”窗口似乎使用了您通过在代码中使用而引用的名称空间 如果在代码文件中不使用linq和System.linq命名空间,则“监视”窗口无法找到扩展名 如果你有一个使用系统;并在代码中使用该名称空间中的某些内容,监视窗口将查找并执行linq扩展。如果不使用System.Linq中的任何内容,则引用将被优化掉,因此此程序集不会在运行时加载,调试器无法使用它 尝试添加以下内容:它正在进行我的测试
> using System.Collections.Generic;
using System.Linq;
如果代码中没有“using System.Linq”语句,您仍然可以通过手动调用扩展方法来使用Linq查询:
System.Linq.Enumerable.Select(collection, x=>x.Name)
对我有用。您的代码系统中是否有所需的using指令。Linq?您是否尝试过使用即时窗口?@Bigiansen:我在即时窗口中收到了相同的错误消息。我已使用屏幕截图更新了我的帖子:即使添加using System。Linq语句,此问题仍然存在。有什么线索吗?@sɐunıɔןqɐp是的,更新了我的答案,您不仅需要使用,而且必须确保使用了该程序集中的某些内容,否则它不会在运行时加载,调试器也无法使用它。@sɐunɔןqɐp而且您似乎必须在断点之前使用名称空间,因此,当您点击程序集时,它已经加载。是的,这就是问题所在,谢谢!虽然我对这个结果不满意-是否有任何方法可以强制using System.Linq语句不被优化?这就是为什么您可能在同一文件的其他地方使用Linq表达式的原因。在新的课堂上尝试同样的方法。using语句将变灰,因为您没有在文件中的任何位置使用LINQ。在这种情况下,LINQ在“监视”窗口和“立即”窗口中不可用。