C# 调试期间如何查看数据?

C# 调试期间如何查看数据?,c#,visual-studio,ienumerable,C#,Visual Studio,Ienumerable,在调试和试图查看本地数组中的内容时,我总是得到这样一句话:扩展结果视图将枚举IEnumerable。 我正在使用Visual Studio 2013进行Web和C语言编码。 如何查看我的数据?C中的可枚举对象受限制,因此,如果您有一个仅分配给但尚未使用的可枚举对象,则调试时将遇到“扩展结果视图”消息 下面是一个简单的例子来帮助说明 string[] myArr = { "one", "two", "" }; var query = myArr.Where(x => !String.IsNu

在调试和试图查看本地数组中的内容时,我总是得到这样一句话:扩展结果视图将枚举IEnumerable。 我正在使用Visual Studio 2013进行Web和C语言编码。
如何查看我的数据?

C中的可枚举对象受限制,因此,如果您有一个仅分配给但尚未使用的可枚举对象,则调试时将遇到“扩展结果视图”消息

下面是一个简单的例子来帮助说明

string[] myArr = { "one", "two", "" };
var query = myArr.Where(x => !String.IsNullOrEmpty(x));
foreach(var q in query)
{
    Console.WriteLine(q);
}
在本例中,在foreach上设置断点并在调试器中检查query的值将向您提供所引用的消息-这是因为.Where的执行已推迟到集合实际枚举时。 幸运的是,这将发生在下一行中,因为foreach将迭代集合,导致.Where执行

但是,您可能会发现,在某些情况下,直到很久以后才会枚举集合—我认为这是延迟执行的好处之一,因为它允许在运行时感知性能,特别是在大型集合上。 一个简单的例子是,用户可以访问应用程序中的某个页面,其中有一个很少使用的下拉列表,其中包含大量对象。与其让下拉列表通过枚举大型对象集合来减缓该页面的加载速度,不如将该枚举推迟到页面加载且用户决定使用下拉列表查看该集合之后,因为他们可能永远不会这样做

但是,您可以强制立即执行,而不必等待数组被枚举,您只需像这样在查询中调用.ToArray或.ToList

var query = myArr.Where(x => !String.IsNullOrEmpty(x)).ToArray();

现在,当您调试时,您将看到在foreach中使用查询之前填充的查询内容。

谢谢!多么好的解释@CarlBurnett